lib

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

commit 5d13798e131a4833690f7b9c3bfafd95a202d519
parent 9788d1b607a273281575183ba77332af58d9dfd1
Author: triesap <tyson@radroots.org>
Date:   Wed,  4 Mar 2026 13:54:44 +0000

events: move parsed wrappers to events-codec

Diffstat:
Mcrates/events-codec/src/app_data/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/comment/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/coop/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/document/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/farm/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/follow/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/geochat/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/gift_wrap/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/job/feedback/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/job/request/decode.rs | 22++++++++--------------
Mcrates/events-codec/src/job/result/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/job/traits.rs | 18+++++++++---------
Mcrates/events-codec/src/list/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/list_set/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/listing/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/message/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/message_file/decode.rs | 22++++++++--------------
Mcrates/events-codec/src/plot/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/post/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/profile/decode.rs | 31++++++++++++++++++++-----------
Mcrates/events-codec/src/reaction/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/resource_area/decode.rs | 21++++++++-------------
Mcrates/events-codec/src/resource_cap/decode.rs | 22++++++++--------------
Mcrates/events-codec/src/seal/decode.rs | 21++++++++-------------
Mcrates/events-codec/tests/app_data.rs | 6+++---
Mcrates/events-codec/tests/comment.rs | 8++++----
Mcrates/events-codec/tests/follow.rs | 12++++++------
Mcrates/events-codec/tests/geochat.rs | 6+++---
Mcrates/events-codec/tests/gift_wrap.rs | 10+++++-----
Mcrates/events-codec/tests/job_traits.rs | 14+++++++-------
Mcrates/events-codec/tests/list.rs | 10+++++-----
Mcrates/events-codec/tests/list_set.rs | 4++--
Mcrates/events-codec/tests/message.rs | 8++++----
Mcrates/events-codec/tests/message_file.rs | 6+++---
Mcrates/events-codec/tests/post.rs | 4++--
Mcrates/events-codec/tests/profile.rs | 6+++---
Mcrates/events-codec/tests/reaction.rs | 6+++---
Mcrates/events-codec/tests/seal.rs | 4++--
Mcrates/events-codec/tests/structured_decode.rs | 66++++++++++++++++++++++++++++++++----------------------------------
Mcrates/events/src/account.rs | 22+---------------------
Mcrates/events/src/app_data.rs | 22+---------------------
Mcrates/events/src/comment.rs | 22+---------------------
Mcrates/events/src/coop.rs | 21---------------------
Mcrates/events/src/document.rs | 21---------------------
Mcrates/events/src/farm.rs | 21---------------------
Mcrates/events/src/follow.rs | 21---------------------
Mcrates/events/src/geochat.rs | 21---------------------
Mcrates/events/src/gift_wrap.rs | 21---------------------
Mcrates/events/src/job_feedback.rs | 22+---------------------
Mcrates/events/src/job_request.rs | 22+---------------------
Mcrates/events/src/job_result.rs | 22+---------------------
Mcrates/events/src/list.rs | 21---------------------
Mcrates/events/src/list_set.rs | 22+---------------------
Mcrates/events/src/listing.rs | 21---------------------
Mcrates/events/src/message.rs | 22+---------------------
Mcrates/events/src/message_file.rs | 22+---------------------
Mcrates/events/src/plot.rs | 21---------------------
Mcrates/events/src/post.rs | 21---------------------
Mcrates/events/src/profile.rs | 23-----------------------
Mcrates/events/src/reaction.rs | 22+---------------------
Mcrates/events/src/resource_area.rs | 21---------------------
Mcrates/events/src/resource_cap.rs | 21---------------------
Mcrates/events/src/seal.rs | 21---------------------
63 files changed, 299 insertions(+), 901 deletions(-)

diff --git a/crates/events-codec/src/app_data/decode.rs b/crates/events-codec/src/app_data/decode.rs @@ -7,12 +7,13 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, app_data::{ - KIND_APP_DATA, RadrootsAppData, RadrootsAppDataEventIndex, RadrootsAppDataEventMetadata, + KIND_APP_DATA, RadrootsAppData, }, tags::TAG_D, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; fn parse_d_tag(tags: &[Vec<String>]) -> Result<String, EventParseError> { let tag = tags @@ -54,15 +55,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsAppDataEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsAppData>, EventParseError> { let app_data = app_data_from_tags(kind, &tags, &content)?; - Ok(RadrootsAppDataEventMetadata { - id, - author, - published_at, - kind, - app_data, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, app_data)) } pub fn parsed_from_event( @@ -73,8 +68,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsAppDataEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsAppData>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -82,7 +77,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsAppDataEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -92,6 +87,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/comment/decode.rs b/crates/events-codec/src/comment/decode.rs @@ -6,12 +6,13 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, - comment::{RadrootsComment, RadrootsCommentEventIndex, RadrootsCommentEventMetadata}, + comment::{RadrootsComment}, kinds::KIND_COMMENT, tags::{TAG_E_PREV, TAG_E_ROOT}, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; use crate::event_ref::{find_event_ref_tag, parse_event_ref_tag, parse_nip10_ref_tags}; const DEFAULT_KIND: u32 = KIND_COMMENT; @@ -61,15 +62,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsCommentEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsComment>, EventParseError> { let comment = comment_from_tags(kind, &tags, &content)?; - Ok(RadrootsCommentEventMetadata { - id, - author, - published_at, - kind, - comment, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, comment)) } pub fn parsed_from_event( @@ -80,8 +75,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsCommentEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsComment>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -89,7 +84,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsCommentEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -99,6 +94,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/coop/decode.rs b/crates/events-codec/src/coop/decode.rs @@ -9,13 +9,14 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, - coop::{RadrootsCoop, RadrootsCoopEventIndex, RadrootsCoopEventMetadata}, + coop::{RadrootsCoop}, kinds::KIND_COOP, tags::TAG_D, }; use crate::d_tag::validate_d_tag_tag; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_COOP; @@ -69,15 +70,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsCoopEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsCoop>, EventParseError> { let coop = coop_from_event(kind, &tags, &content)?; - Ok(RadrootsCoopEventMetadata { - id, - author, - published_at, - kind, - coop, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, coop)) } pub fn parsed_from_event( @@ -88,8 +83,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsCoopEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsCoop>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -97,7 +92,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsCoopEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -107,6 +102,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/document/decode.rs b/crates/events-codec/src/document/decode.rs @@ -9,13 +9,14 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, - document::{RadrootsDocument, RadrootsDocumentEventIndex, RadrootsDocumentEventMetadata}, + document::{RadrootsDocument}, kinds::KIND_DOCUMENT, tags::TAG_D, }; use crate::d_tag::validate_d_tag_tag; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const TAG_A: &str = "a"; const TAG_P: &str = "p"; @@ -130,15 +131,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsDocumentEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsDocument>, EventParseError> { let document = document_from_event(kind, &tags, &content)?; - Ok(RadrootsDocumentEventMetadata { - id, - author, - published_at, - kind, - document, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, document)) } pub fn parsed_from_event( @@ -149,8 +144,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsDocumentEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsDocument>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -158,7 +153,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsDocumentEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -168,6 +163,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/farm/decode.rs b/crates/events-codec/src/farm/decode.rs @@ -8,13 +8,14 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, - farm::{RadrootsFarm, RadrootsFarmEventIndex, RadrootsFarmEventMetadata}, + farm::{RadrootsFarm}, kinds::KIND_FARM, tags::TAG_D, }; use crate::d_tag::validate_d_tag_tag; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_FARM; @@ -68,15 +69,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsFarmEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsFarm>, EventParseError> { let farm = farm_from_event(kind, &tags, &content)?; - Ok(RadrootsFarmEventMetadata { - id, - author, - published_at, - kind, - farm, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, farm)) } pub fn parsed_from_event( @@ -87,8 +82,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsFarmEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsFarm>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -96,7 +91,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsFarmEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -106,6 +101,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/follow/decode.rs b/crates/events-codec/src/follow/decode.rs @@ -4,13 +4,14 @@ use alloc::{string::String, vec::Vec}; use radroots_events::{ RadrootsNostrEvent, follow::{ - RadrootsFollow, RadrootsFollowEventIndex, RadrootsFollowEventMetadata, + RadrootsFollow, RadrootsFollowProfile, }, kinds::KIND_FOLLOW, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_FOLLOW; @@ -75,15 +76,9 @@ pub fn data_from_event( kind: u32, _content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsFollowEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsFollow>, EventParseError> { let follow = follow_from_tags(kind, &tags, published_at)?; - Ok(RadrootsFollowEventMetadata { - id, - author, - published_at, - kind, - follow, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, follow)) } pub fn parsed_from_event( @@ -94,8 +89,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsFollowEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsFollow>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -103,7 +98,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsFollowEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -113,6 +108,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/geochat/decode.rs b/crates/events-codec/src/geochat/decode.rs @@ -6,11 +6,12 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, - geochat::{RadrootsGeoChat, RadrootsGeoChatEventIndex, RadrootsGeoChatEventMetadata}, + geochat::{RadrootsGeoChat}, kinds::KIND_GEOCHAT, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_GEOCHAT; const TAG_G: &str = "g"; @@ -95,15 +96,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsGeoChatEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsGeoChat>, EventParseError> { let geochat = geochat_from_tags(kind, &tags, &content)?; - Ok(RadrootsGeoChatEventMetadata { - id, - author, - published_at, - kind, - geochat, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, geochat)) } pub fn parsed_from_event( @@ -114,8 +109,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsGeoChatEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsGeoChat>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -123,7 +118,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsGeoChatEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -133,6 +128,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/gift_wrap/decode.rs b/crates/events-codec/src/gift_wrap/decode.rs @@ -7,13 +7,14 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, gift_wrap::{ - RadrootsGiftWrap, RadrootsGiftWrapEventIndex, RadrootsGiftWrapEventMetadata, + RadrootsGiftWrap, RadrootsGiftWrapRecipient, }, kinds::KIND_GIFT_WRAP, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_GIFT_WRAP; @@ -84,15 +85,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsGiftWrapEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsGiftWrap>, EventParseError> { let gift_wrap = gift_wrap_from_tags(kind, &tags, &content)?; - Ok(RadrootsGiftWrapEventMetadata { - id, - author, - published_at, - kind, - gift_wrap, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, gift_wrap)) } pub fn parsed_from_event( @@ -103,8 +98,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsGiftWrapEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsGiftWrap>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -112,7 +107,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsGiftWrapEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -122,6 +117,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/job/feedback/decode.rs b/crates/events-codec/src/job/feedback/decode.rs @@ -2,7 +2,7 @@ use radroots_events::{ RadrootsNostrEvent, RadrootsNostrEventPtr, job::JobPaymentRequest, job_feedback::{ - RadrootsJobFeedback, RadrootsJobFeedbackEventIndex, RadrootsJobFeedbackEventMetadata, + RadrootsJobFeedback, }, kinds::KIND_JOB_FEEDBACK, }; @@ -17,6 +17,7 @@ use crate::job::{ error::JobParseError, util::{feedback_status_from_tag, parse_amount_tag_sat, parse_bool_encrypted}, }; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; pub fn job_feedback_from_tags( kind: u32, @@ -84,18 +85,12 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsJobFeedbackEventMetadata, JobParseError> { +) -> Result<RadrootsParsedData<RadrootsJobFeedback>, JobParseError> { if kind != KIND_JOB_FEEDBACK { return Err(JobParseError::InvalidTag("kind (expected 7000)")); } let job_feedback = job_feedback_from_tags(kind, &tags, &content)?; - Ok(RadrootsJobFeedbackEventMetadata { - id, - author, - published_at, - kind, - job_feedback, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, job_feedback)) } pub fn parsed_from_event( @@ -106,8 +101,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsJobFeedbackEventIndex, JobParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsJobFeedback>, JobParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -115,7 +110,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsJobFeedbackEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -125,6 +120,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/job/request/decode.rs b/crates/events-codec/src/job/request/decode.rs @@ -1,8 +1,7 @@ use radroots_events::{ RadrootsNostrEvent, job_request::{ - RadrootsJobInput, RadrootsJobParam, RadrootsJobRequest, RadrootsJobRequestEventIndex, - RadrootsJobRequestEventMetadata, + RadrootsJobInput, RadrootsJobParam, RadrootsJobRequest, }, kinds::is_request_kind, }; @@ -14,6 +13,7 @@ use crate::job::{ error::JobParseError, util::{parse_bid_tag_sat, parse_bool_encrypted, parse_i_tags, parse_params}, }; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; pub fn job_request_from_tags( kind: u32, @@ -73,18 +73,12 @@ pub fn data_from_event( published_at: u32, kind: u32, tags: Vec<Vec<String>>, -) -> Result<RadrootsJobRequestEventMetadata, JobParseError> { +) -> Result<RadrootsParsedData<RadrootsJobRequest>, JobParseError> { if !is_request_kind(kind) { return Err(JobParseError::InvalidTag("kind (expected 5000-5999)")); } let job_request = job_request_from_tags(kind, &tags)?; - Ok(RadrootsJobRequestEventMetadata { - id, - author, - published_at, - kind, - job_request, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, job_request)) } pub fn parsed_from_event( @@ -95,10 +89,10 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsJobRequestEventIndex, JobParseError> { - let metadata = +) -> Result<RadrootsParsedEvent<RadrootsJobRequest>, JobParseError> { + let data = data_from_event(id.clone(), author.clone(), published_at, kind, tags.clone())?; - Ok(RadrootsJobRequestEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -108,6 +102,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/job/result/decode.rs b/crates/events-codec/src/job/result/decode.rs @@ -2,7 +2,7 @@ use radroots_events::{ RadrootsNostrEvent, RadrootsNostrEventPtr, job::JobPaymentRequest, job_request::RadrootsJobInput, - job_result::{RadrootsJobResult, RadrootsJobResultEventIndex, RadrootsJobResultEventMetadata}, + job_result::{RadrootsJobResult}, kinds::is_result_kind, }; @@ -16,6 +16,7 @@ use crate::job::{ error::JobParseError, util::{parse_amount_tag_sat, parse_bool_encrypted, parse_i_tags}, }; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; pub fn job_result_from_tags( kind: u32, @@ -79,18 +80,12 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsJobResultEventMetadata, JobParseError> { +) -> Result<RadrootsParsedData<RadrootsJobResult>, JobParseError> { if !is_result_kind(kind) { return Err(JobParseError::InvalidTag("kind (expected 6000-6999)")); } let job_result = job_result_from_tags(kind, &tags, &content)?; - Ok(RadrootsJobResultEventMetadata { - id, - author, - published_at, - kind, - job_result, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, job_result)) } pub fn parsed_from_event( @@ -101,8 +96,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsJobResultEventIndex, JobParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsJobResult>, JobParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -110,7 +105,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsJobResultEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -120,6 +115,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/job/traits.rs b/crates/events-codec/src/job/traits.rs @@ -4,10 +4,10 @@ extern crate alloc; #[cfg(not(feature = "std"))] use alloc::{borrow::ToOwned, string::String, vec::Vec}; use radroots_events::{ - job_feedback::{RadrootsJobFeedbackEventIndex, RadrootsJobFeedbackEventMetadata}, - job_request::{RadrootsJobRequestEventIndex, RadrootsJobRequestEventMetadata}, - job_result::{RadrootsJobResultEventIndex, RadrootsJobResultEventMetadata}, + job_feedback::RadrootsJobFeedback, job_request::RadrootsJobRequest, + job_result::RadrootsJobResult, }; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; use crate::job::{ error::JobParseError, @@ -34,7 +34,7 @@ pub trait JobEventLike { fn raw_tags(&self) -> Vec<Vec<String>>; fn raw_sig(&self) -> String; - fn to_job_request_metadata(&self) -> Result<RadrootsJobRequestEventMetadata, JobParseError> { + fn to_job_request_metadata(&self) -> Result<RadrootsParsedData<RadrootsJobRequest>, JobParseError> { request_metadata_from_event( self.raw_id(), self.raw_author(), @@ -44,7 +44,7 @@ pub trait JobEventLike { ) } - fn to_job_request_event_index(&self) -> Result<RadrootsJobRequestEventIndex, JobParseError> { + fn to_job_request_event_index(&self) -> Result<RadrootsParsedEvent<RadrootsJobRequest>, JobParseError> { request_index_from_event( self.raw_id(), self.raw_author(), @@ -56,7 +56,7 @@ pub trait JobEventLike { ) } - fn to_job_result_metadata(&self) -> Result<RadrootsJobResultEventMetadata, JobParseError> { + fn to_job_result_metadata(&self) -> Result<RadrootsParsedData<RadrootsJobResult>, JobParseError> { result_metadata_from_event( self.raw_id(), self.raw_author(), @@ -67,7 +67,7 @@ pub trait JobEventLike { ) } - fn to_job_result_event_index(&self) -> Result<RadrootsJobResultEventIndex, JobParseError> { + fn to_job_result_event_index(&self) -> Result<RadrootsParsedEvent<RadrootsJobResult>, JobParseError> { result_index_from_event( self.raw_id(), self.raw_author(), @@ -79,7 +79,7 @@ pub trait JobEventLike { ) } - fn to_job_feedback_metadata(&self) -> Result<RadrootsJobFeedbackEventMetadata, JobParseError> { + fn to_job_feedback_metadata(&self) -> Result<RadrootsParsedData<RadrootsJobFeedback>, JobParseError> { feedback_metadata_from_event( self.raw_id(), self.raw_author(), @@ -90,7 +90,7 @@ pub trait JobEventLike { ) } - fn to_job_feedback_event_index(&self) -> Result<RadrootsJobFeedbackEventIndex, JobParseError> { + fn to_job_feedback_event_index(&self) -> Result<RadrootsParsedEvent<RadrootsJobFeedback>, JobParseError> { feedback_index_from_event( self.raw_id(), self.raw_author(), diff --git a/crates/events-codec/src/list/decode.rs b/crates/events-codec/src/list/decode.rs @@ -4,10 +4,11 @@ use alloc::{string::String, vec::Vec}; use radroots_events::{ RadrootsNostrEvent, kinds::is_nip51_standard_list_kind, - list::{RadrootsList, RadrootsListEntry, RadrootsListEventIndex, RadrootsListEventMetadata}, + list::{RadrootsList, RadrootsListEntry}, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; fn entry_from_tag(tag: &[String]) -> Result<RadrootsListEntry, EventParseError> { let name = tag.get(0).ok_or(EventParseError::InvalidTag("tag"))?; @@ -56,15 +57,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsListEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsList>, EventParseError> { let list = list_from_tags(kind, content, &tags)?; - Ok(RadrootsListEventMetadata { - id, - author, - published_at, - kind, - list, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, list)) } pub fn parsed_from_event( @@ -75,8 +70,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsListEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsList>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -84,7 +79,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsListEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -94,7 +89,7 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/list_set/decode.rs b/crates/events-codec/src/list_set/decode.rs @@ -5,10 +5,11 @@ use radroots_events::{ RadrootsNostrEvent, kinds::is_nip51_list_set_kind, list::RadrootsListEntry, - list_set::{RadrootsListSet, RadrootsListSetEventIndex, RadrootsListSetEventMetadata}, + list_set::{RadrootsListSet}, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; #[cfg(feature = "serde_json")] use crate::list::decode::list_entries_from_tags; @@ -107,15 +108,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsListSetEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsListSet>, EventParseError> { let list_set = list_set_from_tags(kind, content, &tags)?; - Ok(RadrootsListSetEventMetadata { - id, - author, - published_at, - kind, - list_set, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, list_set)) } pub fn parsed_from_event( @@ -126,8 +121,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsListSetEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsListSet>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -135,7 +130,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsListSetEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -145,7 +140,7 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/listing/decode.rs b/crates/events-codec/src/listing/decode.rs @@ -11,7 +11,7 @@ use radroots_events::{ kinds::KIND_LISTING, kinds::{KIND_FARM, KIND_PLOT, KIND_RESOURCE_AREA}, listing::{ - RadrootsListing, RadrootsListingEventIndex, RadrootsListingEventMetadata, + RadrootsListing, RadrootsListingFarmRef, }, plot::RadrootsPlotRef, @@ -21,6 +21,7 @@ use radroots_events::{ use crate::d_tag::validate_d_tag_tag; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_LISTING; const TAG_A: &str = "a"; @@ -232,15 +233,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsListingEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsListing>, EventParseError> { let listing = listing_from_event(kind, &tags, &content)?; - Ok(RadrootsListingEventMetadata { - id, - author, - published_at, - kind, - listing, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, listing)) } pub fn parsed_from_event( @@ -251,8 +246,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsListingEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsListing>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -260,7 +255,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsListingEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -270,6 +265,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/message/decode.rs b/crates/events-codec/src/message/decode.rs @@ -7,10 +7,11 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, kinds::KIND_MESSAGE, - message::{RadrootsMessage, RadrootsMessageEventIndex, RadrootsMessageEventMetadata}, + message::{RadrootsMessage}, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; use crate::message::tags::{parse_recipients, parse_reply_tag, parse_subject_tag}; const DEFAULT_KIND: u32 = KIND_MESSAGE; @@ -51,15 +52,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsMessageEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsMessage>, EventParseError> { let message = message_from_tags(kind, &tags, &content)?; - Ok(RadrootsMessageEventMetadata { - id, - author, - published_at, - kind, - message, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, message)) } pub fn parsed_from_event( @@ -70,8 +65,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsMessageEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsMessage>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -79,7 +74,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsMessageEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -89,6 +84,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/message_file/decode.rs b/crates/events-codec/src/message_file/decode.rs @@ -8,12 +8,12 @@ use radroots_events::{ RadrootsNostrEvent, kinds::KIND_MESSAGE_FILE, message_file::{ - RadrootsMessageFile, RadrootsMessageFileDimensions, RadrootsMessageFileEventIndex, - RadrootsMessageFileEventMetadata, + RadrootsMessageFile, RadrootsMessageFileDimensions, }, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; use crate::message::tags::{parse_recipients, parse_reply_tag, parse_subject_tag}; const DEFAULT_KIND: u32 = KIND_MESSAGE_FILE; @@ -162,15 +162,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsMessageFileEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsMessageFile>, EventParseError> { let message_file = message_file_from_tags(kind, &tags, &content)?; - Ok(RadrootsMessageFileEventMetadata { - id, - author, - published_at, - kind, - message_file, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, message_file)) } pub fn parsed_from_event( @@ -181,8 +175,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsMessageFileEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsMessageFile>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -190,7 +184,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsMessageFileEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -200,6 +194,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/plot/decode.rs b/crates/events-codec/src/plot/decode.rs @@ -10,12 +10,13 @@ use radroots_events::{ RadrootsNostrEvent, farm::RadrootsFarmRef, kinds::{KIND_FARM, KIND_PLOT}, - plot::{RadrootsPlot, RadrootsPlotEventIndex, RadrootsPlotEventMetadata}, + plot::{RadrootsPlot}, tags::TAG_D, }; use crate::d_tag::validate_d_tag_tag; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const TAG_A: &str = "a"; const TAG_P: &str = "p"; @@ -129,15 +130,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsPlotEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsPlot>, EventParseError> { let plot = plot_from_event(kind, &tags, &content)?; - Ok(RadrootsPlotEventMetadata { - id, - author, - published_at, - kind, - plot, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, plot)) } pub fn parsed_from_event( @@ -148,8 +143,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsPlotEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsPlot>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -157,7 +152,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsPlotEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -167,6 +162,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/post/decode.rs b/crates/events-codec/src/post/decode.rs @@ -7,10 +7,11 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, kinds::KIND_POST, - post::{RadrootsPost, RadrootsPostEventIndex, RadrootsPostEventMetadata}, + post::{RadrootsPost}, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_POST; @@ -36,15 +37,9 @@ pub fn data_from_event( kind: u32, content: String, _tags: Vec<Vec<String>>, -) -> Result<RadrootsPostEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsPost>, EventParseError> { let post = post_from_content(kind, &content)?; - Ok(RadrootsPostEventMetadata { - id, - author, - published_at, - kind, - post, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, post)) } pub fn parsed_from_event( @@ -55,8 +50,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsPostEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsPost>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -64,7 +59,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsPostEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -74,6 +69,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/profile/decode.rs b/crates/events-codec/src/profile/decode.rs @@ -10,16 +10,23 @@ use radroots_events::{ RadrootsNostrEvent, kinds::KIND_PROFILE, profile::{ - RADROOTS_PROFILE_TYPE_TAG_KEY, RadrootsProfile, RadrootsProfileEventIndex, - RadrootsProfileEventMetadata, RadrootsProfileType, radroots_profile_type_from_tag_value, + RADROOTS_PROFILE_TYPE_TAG_KEY, RadrootsProfile, RadrootsProfileType, radroots_profile_type_from_tag_value, }, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; use serde_json::Value; const PROFILE_KIND: u32 = KIND_PROFILE; +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +#[derive(Clone, Debug)] +pub struct RadrootsProfileData { + pub profile_type: Option<RadrootsProfileType>, + pub profile: RadrootsProfile, +} + fn parse_optional_string(value: &Value, key: &'static str) -> Option<String> { value .get(key) @@ -74,7 +81,7 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsProfileEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsProfileData>, EventParseError> { if kind != PROFILE_KIND { return Err(EventParseError::InvalidKind { expected: "0", @@ -83,14 +90,16 @@ pub fn data_from_event( } let profile = profile_from_content(&content)?; let profile_type = profile_type_from_tags(&tags); - Ok(RadrootsProfileEventMetadata { + Ok(RadrootsParsedData::new( id, author, published_at, kind, - profile_type, - profile, - }) + RadrootsProfileData { + profile_type, + profile, + }, + )) } pub fn parsed_from_event( @@ -101,8 +110,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsProfileEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsProfileData>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -110,7 +119,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsProfileEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -120,6 +129,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/reaction/decode.rs b/crates/events-codec/src/reaction/decode.rs @@ -7,11 +7,12 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, kinds::KIND_REACTION, - reaction::{RadrootsReaction, RadrootsReactionEventIndex, RadrootsReactionEventMetadata}, + reaction::{RadrootsReaction}, tags::TAG_E_ROOT, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; use crate::event_ref::{find_event_ref_tag, parse_event_ref_tag, parse_nip10_ref_tags}; const DEFAULT_KIND: u32 = KIND_REACTION; @@ -50,15 +51,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsReactionEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsReaction>, EventParseError> { let reaction = reaction_from_tags(kind, &tags, &content)?; - Ok(RadrootsReactionEventMetadata { - id, - author, - published_at, - kind, - reaction, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, reaction)) } pub fn parsed_from_event( @@ -69,8 +64,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsReactionEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsReaction>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -78,7 +73,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsReactionEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -88,6 +83,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/resource_area/decode.rs b/crates/events-codec/src/resource_area/decode.rs @@ -10,13 +10,14 @@ use radroots_events::{ RadrootsNostrEvent, kinds::KIND_RESOURCE_AREA, resource_area::{ - RadrootsResourceArea, RadrootsResourceAreaEventIndex, RadrootsResourceAreaEventMetadata, + RadrootsResourceArea, }, tags::TAG_D, }; use crate::d_tag::validate_d_tag_tag; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_RESOURCE_AREA; @@ -70,15 +71,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsResourceAreaEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsResourceArea>, EventParseError> { let area = resource_area_from_event(kind, &tags, &content)?; - Ok(RadrootsResourceAreaEventMetadata { - id, - author, - published_at, - kind, - area, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, area)) } pub fn parsed_from_event( @@ -89,8 +84,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsResourceAreaEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsResourceArea>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -98,7 +93,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsResourceAreaEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -108,6 +103,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/resource_cap/decode.rs b/crates/events-codec/src/resource_cap/decode.rs @@ -10,14 +10,14 @@ use radroots_events::{ RadrootsNostrEvent, kinds::KIND_RESOURCE_HARVEST_CAP, resource_cap::{ - RadrootsResourceHarvestCap, RadrootsResourceHarvestCapEventIndex, - RadrootsResourceHarvestCapEventMetadata, + RadrootsResourceHarvestCap, }, tags::TAG_D, }; use crate::d_tag::validate_d_tag_tag; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_RESOURCE_HARVEST_CAP; @@ -71,15 +71,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsResourceHarvestCapEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsResourceHarvestCap>, EventParseError> { let cap = resource_harvest_cap_from_event(kind, &tags, &content)?; - Ok(RadrootsResourceHarvestCapEventMetadata { - id, - author, - published_at, - kind, - cap, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, cap)) } pub fn parsed_from_event( @@ -90,8 +84,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsResourceHarvestCapEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsResourceHarvestCap>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -99,7 +93,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsResourceHarvestCapEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -109,6 +103,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/src/seal/decode.rs b/crates/events-codec/src/seal/decode.rs @@ -7,10 +7,11 @@ use alloc::{ use radroots_events::{ RadrootsNostrEvent, kinds::KIND_SEAL, - seal::{RadrootsSeal, RadrootsSealEventIndex, RadrootsSealEventMetadata}, + seal::{RadrootsSeal}, }; use crate::error::EventParseError; +use crate::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const DEFAULT_KIND: u32 = KIND_SEAL; @@ -43,15 +44,9 @@ pub fn data_from_event( kind: u32, content: String, tags: Vec<Vec<String>>, -) -> Result<RadrootsSealEventMetadata, EventParseError> { +) -> Result<RadrootsParsedData<RadrootsSeal>, EventParseError> { let seal = seal_from_parts(kind, &tags, &content)?; - Ok(RadrootsSealEventMetadata { - id, - author, - published_at, - kind, - seal, - }) + Ok(RadrootsParsedData::new(id, author, published_at, kind, seal)) } pub fn parsed_from_event( @@ -62,8 +57,8 @@ pub fn parsed_from_event( content: String, tags: Vec<Vec<String>>, sig: String, -) -> Result<RadrootsSealEventIndex, EventParseError> { - let metadata = data_from_event( +) -> Result<RadrootsParsedEvent<RadrootsSeal>, EventParseError> { + let data = data_from_event( id.clone(), author.clone(), published_at, @@ -71,7 +66,7 @@ pub fn parsed_from_event( content.clone(), tags.clone(), )?; - Ok(RadrootsSealEventIndex { + Ok(RadrootsParsedEvent { event: RadrootsNostrEvent { id, author, @@ -81,6 +76,6 @@ pub fn parsed_from_event( tags, sig, }, - metadata, + data, }) } diff --git a/crates/events-codec/tests/app_data.rs b/crates/events-codec/tests/app_data.rs @@ -105,8 +105,8 @@ fn app_data_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 42); assert_eq!(metadata.kind, KIND_APP_DATA); - assert_eq!(metadata.app_data.d_tag, "radroots.app"); - assert_eq!(metadata.app_data.content, "payload"); + assert_eq!(metadata.data.d_tag, "radroots.app"); + assert_eq!(metadata.data.content, "payload"); let index = parsed_from_event( "id".to_string(), @@ -124,7 +124,7 @@ fn app_data_metadata_and_index_from_event_roundtrip() { assert_eq!(index.event.kind, KIND_APP_DATA); assert_eq!(index.event.content, "payload"); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.app_data.d_tag, "radroots.app"); + assert_eq!(index.data.data.d_tag, "radroots.app"); } #[test] diff --git a/crates/events-codec/tests/comment.rs b/crates/events-codec/tests/comment.rs @@ -233,9 +233,9 @@ fn comment_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.id, "id"); assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 77); - assert_eq!(metadata.comment.content, "hello"); - assert_event_ref_fields(&metadata.comment.root, &root); - assert_event_ref_fields(&metadata.comment.parent, &parent); + assert_eq!(metadata.data.content, "hello"); + assert_event_ref_fields(&metadata.data.root, &root); + assert_event_ref_fields(&metadata.data.parent, &parent); let index = parsed_from_event( "id".to_string(), @@ -250,7 +250,7 @@ fn comment_metadata_and_index_from_event_roundtrip() { assert_eq!(index.event.created_at, 77); assert_eq!(index.event.kind, KIND_COMMENT); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.comment.content, "hello"); + assert_eq!(index.data.data.content, "hello"); } #[test] diff --git a/crates/events-codec/tests/follow.rs b/crates/events-codec/tests/follow.rs @@ -159,15 +159,15 @@ fn follow_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 50); assert_eq!(metadata.kind, KIND_FOLLOW); - assert_eq!(metadata.follow.list.len(), 1); - assert_eq!(metadata.follow.list[0].published_at, 88); - assert_eq!(metadata.follow.list[0].public_key, "pubkey"); + assert_eq!(metadata.data.list.len(), 1); + assert_eq!(metadata.data.list[0].published_at, 88); + assert_eq!(metadata.data.list[0].public_key, "pubkey"); assert_eq!( - metadata.follow.list[0].relay_url.as_deref(), + metadata.data.list[0].relay_url.as_deref(), Some("wss://relay.example.com") ); assert_eq!( - metadata.follow.list[0].contact_name.as_deref(), + metadata.data.list[0].contact_name.as_deref(), Some("alice") ); @@ -183,7 +183,7 @@ fn follow_metadata_and_index_from_event_roundtrip() { .unwrap(); assert_eq!(index.event.kind, KIND_FOLLOW); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.follow.list.len(), 1); + assert_eq!(index.data.data.list.len(), 1); } #[test] diff --git a/crates/events-codec/tests/geochat.rs b/crates/events-codec/tests/geochat.rs @@ -190,8 +190,8 @@ fn geochat_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 77); assert_eq!(metadata.kind, KIND_GEOCHAT); - assert_eq!(metadata.geochat.geohash, "dr5rsj7"); - assert!(metadata.geochat.teleported); + assert_eq!(metadata.data.geohash, "dr5rsj7"); + assert!(metadata.data.teleported); let index = parsed_from_event( "id".to_string(), @@ -205,7 +205,7 @@ fn geochat_metadata_and_index_from_event_roundtrip() { .unwrap(); assert_eq!(index.event.kind, KIND_GEOCHAT); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.geochat.geohash, "dr5rsj7"); + assert_eq!(index.data.data.geohash, "dr5rsj7"); } #[test] diff --git a/crates/events-codec/tests/gift_wrap.rs b/crates/events-codec/tests/gift_wrap.rs @@ -135,15 +135,15 @@ fn gift_wrap_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 11); assert_eq!( - metadata.gift_wrap.recipient.public_key, + metadata.data.recipient.public_key, gift_wrap.recipient.public_key ); assert_eq!( - metadata.gift_wrap.recipient.relay_url, + metadata.data.recipient.relay_url, gift_wrap.recipient.relay_url ); - assert_eq!(metadata.gift_wrap.content, gift_wrap.content); - assert_eq!(metadata.gift_wrap.expiration, gift_wrap.expiration); + assert_eq!(metadata.data.content, gift_wrap.content); + assert_eq!(metadata.data.expiration, gift_wrap.expiration); let index = parsed_from_event( "id".to_string(), @@ -157,7 +157,7 @@ fn gift_wrap_metadata_and_index_from_event_roundtrip() { .unwrap(); assert_eq!(index.event.kind, KIND_GIFT_WRAP); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.gift_wrap.recipient.public_key, "pubkey"); + assert_eq!(index.data.data.recipient.public_key, "pubkey"); } #[test] diff --git a/crates/events-codec/tests/job_traits.rs b/crates/events-codec/tests/job_traits.rs @@ -53,7 +53,7 @@ fn borrowed_event_adapter_builds_request_metadata() { assert_eq!(metadata.author, event.author); assert_eq!(metadata.published_at, event.created_at); assert_eq!(metadata.kind, event.kind); - assert_eq!(metadata.job_request, req); + assert_eq!(metadata.data, req); } fn sample_result() -> RadrootsJobResult { @@ -155,9 +155,9 @@ fn borrowed_event_adapter_builds_result_metadata_and_index() { assert_eq!(metadata.author, event.author); assert_eq!(metadata.published_at, event.created_at); assert_eq!(metadata.kind, event.kind); - assert_eq!(metadata.job_result.kind, result.kind); - assert_eq!(metadata.job_result.request_event.id, "req"); - assert_eq!(metadata.job_result.content.as_deref(), Some("payload")); + assert_eq!(metadata.data.kind, result.kind); + assert_eq!(metadata.data.request_event.id, "req"); + assert_eq!(metadata.data.content.as_deref(), Some("payload")); let index = adapter.to_job_result_event_index().unwrap(); assert_eq!(index.event.id, event.id); @@ -188,9 +188,9 @@ fn borrowed_event_adapter_builds_feedback_metadata_and_index() { assert_eq!(metadata.author, event.author); assert_eq!(metadata.published_at, event.created_at); assert_eq!(metadata.kind, event.kind); - assert_eq!(metadata.job_feedback.kind, feedback.kind); - assert_eq!(metadata.job_feedback.request_event.id, "req"); - assert_eq!(metadata.job_feedback.content.as_deref(), Some("payload")); + assert_eq!(metadata.data.kind, feedback.kind); + assert_eq!(metadata.data.request_event.id, "req"); + assert_eq!(metadata.data.content.as_deref(), Some("payload")); let index = adapter.to_job_feedback_event_index().unwrap(); assert_eq!(index.event.id, event.id); diff --git a/crates/events-codec/tests/list.rs b/crates/events-codec/tests/list.rs @@ -105,10 +105,10 @@ fn list_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 44); assert_eq!(metadata.kind, KIND_LIST_MUTE); - assert_eq!(metadata.list.content, list.content); - assert_eq!(metadata.list.entries.len(), list.entries.len()); - assert_eq!(metadata.list.entries[0].tag, list.entries[0].tag); - assert_eq!(metadata.list.entries[0].values, list.entries[0].values); + assert_eq!(metadata.data.content, list.content); + assert_eq!(metadata.data.entries.len(), list.entries.len()); + assert_eq!(metadata.data.entries[0].tag, list.entries[0].tag); + assert_eq!(metadata.data.entries[0].values, list.entries[0].values); let index = parsed_from_event( "id".to_string(), @@ -122,7 +122,7 @@ fn list_metadata_and_index_from_event_roundtrip() { .unwrap(); assert_eq!(index.event.kind, KIND_LIST_MUTE); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.list.entries.len(), 2); + assert_eq!(index.data.data.entries.len(), 2); } #[test] diff --git a/crates/events-codec/tests/list_set.rs b/crates/events-codec/tests/list_set.rs @@ -158,7 +158,7 @@ fn list_set_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 44); assert_eq!(metadata.kind, KIND_LIST_SET_FOLLOW); - assert_eq!(metadata.list_set.d_tag, "members.owners"); + assert_eq!(metadata.data.d_tag, "members.owners"); let index = parsed_from_event( "id".to_string(), @@ -172,7 +172,7 @@ fn list_set_metadata_and_index_from_event_roundtrip() { .unwrap(); assert_eq!(index.event.kind, KIND_LIST_SET_FOLLOW); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.list_set.entries.len(), 2); + assert_eq!(index.data.data.entries.len(), 2); } #[test] diff --git a/crates/events-codec/tests/message.rs b/crates/events-codec/tests/message.rs @@ -209,9 +209,9 @@ fn message_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 77); assert_eq!(metadata.kind, KIND_MESSAGE); - assert_eq!(metadata.message.recipients.len(), 2); - assert_eq!(metadata.message.content, "hello"); - assert_eq!(metadata.message.subject.as_deref(), Some("topic")); + assert_eq!(metadata.data.recipients.len(), 2); + assert_eq!(metadata.data.content, "hello"); + assert_eq!(metadata.data.subject.as_deref(), Some("topic")); let index = parsed_from_event( "id".to_string(), @@ -225,7 +225,7 @@ fn message_metadata_and_index_from_event_roundtrip() { .unwrap(); assert_eq!(index.event.kind, KIND_MESSAGE); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.message.recipients.len(), 2); + assert_eq!(index.data.data.recipients.len(), 2); } #[test] diff --git a/crates/events-codec/tests/message_file.rs b/crates/events-codec/tests/message_file.rs @@ -344,8 +344,8 @@ fn message_file_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 77); assert_eq!(metadata.kind, KIND_MESSAGE_FILE); - assert_eq!(metadata.message_file.file_type, "image/jpeg"); - assert_eq!(metadata.message_file.recipients.len(), 2); + assert_eq!(metadata.data.file_type, "image/jpeg"); + assert_eq!(metadata.data.recipients.len(), 2); let index = parsed_from_event( "id".to_string(), @@ -359,7 +359,7 @@ fn message_file_metadata_and_index_from_event_roundtrip() { .unwrap(); assert_eq!(index.event.kind, KIND_MESSAGE_FILE); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.message_file.file_type, "image/jpeg"); + assert_eq!(index.data.data.file_type, "image/jpeg"); } #[test] diff --git a/crates/events-codec/tests/post.rs b/crates/events-codec/tests/post.rs @@ -63,7 +63,7 @@ fn post_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 77); assert_eq!(metadata.kind, KIND_POST); - assert_eq!(metadata.post.content, "hello"); + assert_eq!(metadata.data.content, "hello"); let index = parsed_from_event( "id".to_string(), @@ -81,7 +81,7 @@ fn post_metadata_and_index_from_event_roundtrip() { assert_eq!(index.event.kind, KIND_POST); assert_eq!(index.event.content, "hello"); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.post.content, "hello"); + assert_eq!(index.data.data.content, "hello"); } #[test] diff --git a/crates/events-codec/tests/profile.rs b/crates/events-codec/tests/profile.rs @@ -77,7 +77,7 @@ fn profile_metadata_reads_profile_type_tag() { ) .expect("metadata"); - assert_eq!(metadata.profile_type, Some(RadrootsProfileType::Farm)); + assert_eq!(metadata.data.profile_type, Some(RadrootsProfileType::Farm)); } #[test] @@ -95,7 +95,7 @@ fn profile_metadata_reads_profile_type_any_tag() { ) .expect("metadata"); - assert_eq!(metadata.profile_type, Some(RadrootsProfileType::Any)); + assert_eq!(metadata.data.profile_type, Some(RadrootsProfileType::Any)); } #[test] @@ -113,5 +113,5 @@ fn profile_metadata_reads_profile_type_radrootsd_tag() { ) .expect("metadata"); - assert_eq!(metadata.profile_type, Some(RadrootsProfileType::Radrootsd)); + assert_eq!(metadata.data.profile_type, Some(RadrootsProfileType::Radrootsd)); } diff --git a/crates/events-codec/tests/reaction.rs b/crates/events-codec/tests/reaction.rs @@ -175,8 +175,8 @@ fn reaction_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 99); assert_eq!(metadata.kind, KIND_REACTION); - assert_eq!(metadata.reaction.content, "+"); - assert_eq!(metadata.reaction.root.id, root.id); + assert_eq!(metadata.data.content, "+"); + assert_eq!(metadata.data.root.id, root.id); let index = parsed_from_event( "id".to_string(), @@ -190,7 +190,7 @@ fn reaction_metadata_and_index_from_event_roundtrip() { .unwrap(); assert_eq!(index.event.kind, KIND_REACTION); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.reaction.content, "+"); + assert_eq!(index.data.data.content, "+"); } #[test] diff --git a/crates/events-codec/tests/seal.rs b/crates/events-codec/tests/seal.rs @@ -76,7 +76,7 @@ fn seal_metadata_and_index_from_event_roundtrip() { assert_eq!(metadata.author, "author"); assert_eq!(metadata.published_at, 14); assert_eq!(metadata.kind, KIND_SEAL); - assert_eq!(metadata.seal.content, "payload"); + assert_eq!(metadata.data.content, "payload"); let index = parsed_from_event( "id".to_string(), @@ -90,7 +90,7 @@ fn seal_metadata_and_index_from_event_roundtrip() { .unwrap(); assert_eq!(index.event.kind, KIND_SEAL); assert_eq!(index.event.sig, "sig"); - assert_eq!(index.metadata.seal.content, "payload"); + assert_eq!(index.data.data.content, "payload"); } #[test] diff --git a/crates/events-codec/tests/structured_decode.rs b/crates/events-codec/tests/structured_decode.rs @@ -1,26 +1,23 @@ #![cfg(feature = "serde_json")] use radroots_core::{RadrootsCoreDecimal, RadrootsCoreQuantity, RadrootsCoreUnit}; -use radroots_events::coop::{RadrootsCoop, RadrootsCoopEventIndex, RadrootsCoopEventMetadata}; +use radroots_events::coop::RadrootsCoop; use radroots_events::document::{ - RadrootsDocument, RadrootsDocumentEventIndex, RadrootsDocumentEventMetadata, - RadrootsDocumentSubject, + RadrootsDocument, RadrootsDocumentSubject, }; use radroots_events::farm::{ - RadrootsFarm, RadrootsFarmEventIndex, RadrootsFarmEventMetadata, RadrootsFarmRef, - RadrootsGcsLocation, RadrootsGeoJsonPoint, RadrootsGeoJsonPolygon, + RadrootsFarm, RadrootsFarmRef, RadrootsGcsLocation, RadrootsGeoJsonPoint, + RadrootsGeoJsonPolygon, }; use radroots_events::kinds::{ KIND_COOP, KIND_DOCUMENT, KIND_FARM, KIND_PLOT, KIND_RESOURCE_AREA, KIND_RESOURCE_HARVEST_CAP, }; -use radroots_events::plot::{RadrootsPlot, RadrootsPlotEventIndex, RadrootsPlotEventMetadata}; +use radroots_events::plot::RadrootsPlot; use radroots_events::resource_area::{ - RadrootsResourceArea, RadrootsResourceAreaEventIndex, RadrootsResourceAreaEventMetadata, - RadrootsResourceAreaLocation, RadrootsResourceAreaRef, + RadrootsResourceArea, RadrootsResourceAreaLocation, RadrootsResourceAreaRef, }; use radroots_events::resource_cap::{ - RadrootsResourceHarvestCap, RadrootsResourceHarvestCapEventIndex, - RadrootsResourceHarvestCapEventMetadata, RadrootsResourceHarvestProduct, + RadrootsResourceHarvestCap, RadrootsResourceHarvestProduct, }; use radroots_events::tags::TAG_D; use radroots_events_codec::coop::decode::{ @@ -48,6 +45,7 @@ use radroots_events_codec::resource_cap::decode::{ parsed_from_event as resource_cap_index_from_event, data_from_event as resource_cap_metadata_from_event, resource_harvest_cap_from_event, }; +use radroots_events_codec::parsed::{RadrootsParsedData, RadrootsParsedEvent}; const TEST_NPUB: &str = "npub1tr33s4tj2le2kk9yzhfphdtss26gyn8kv7savnnjhj794nqp333q8e7grr"; const TEST_PUBKEY_HEX: &str = "58e318557257f2ab58a415d21bb57082b4824cf667a1d64e72bcbc5acc018c62"; @@ -243,7 +241,7 @@ fn farm_metadata_and_index_decode_roundtrip() { let d_tag = "AAAAAAAAAAAAAAAAAAAAAA"; let content = serde_json::to_string(&sample_farm(d_tag)).expect("farm content"); let tags = d_tag_tags(d_tag); - let metadata: RadrootsFarmEventMetadata = farm_metadata_from_event( + let metadata: RadrootsParsedData<RadrootsFarm> = farm_metadata_from_event( "id1".to_string(), TEST_PUBKEY_HEX.to_string(), 55, @@ -253,9 +251,9 @@ fn farm_metadata_and_index_decode_roundtrip() { ) .expect("farm metadata"); assert_eq!(metadata.id, "id1"); - assert_eq!(metadata.farm.d_tag, d_tag); + assert_eq!(metadata.data.d_tag, d_tag); - let index: RadrootsFarmEventIndex = farm_index_from_event( + let index: RadrootsParsedEvent<RadrootsFarm> = farm_index_from_event( "id1".to_string(), TEST_PUBKEY_HEX.to_string(), 55, @@ -266,7 +264,7 @@ fn farm_metadata_and_index_decode_roundtrip() { ) .expect("farm index"); assert_eq!(index.event.id, "id1"); - assert_eq!(index.metadata.farm.d_tag, d_tag); + assert_eq!(index.data.data.d_tag, d_tag); } #[test] @@ -305,7 +303,7 @@ fn coop_metadata_and_index_decode_roundtrip() { let d_tag = "BAAAAAAAAAAAAAAAAAAAAA"; let content = serde_json::to_string(&sample_coop(d_tag)).expect("coop content"); let tags = d_tag_tags(d_tag); - let metadata: RadrootsCoopEventMetadata = coop_metadata_from_event( + let metadata: RadrootsParsedData<RadrootsCoop> = coop_metadata_from_event( "id2".to_string(), TEST_PUBKEY_HEX.to_string(), 56, @@ -315,9 +313,9 @@ fn coop_metadata_and_index_decode_roundtrip() { ) .expect("coop metadata"); assert_eq!(metadata.id, "id2"); - assert_eq!(metadata.coop.d_tag, d_tag); + assert_eq!(metadata.data.d_tag, d_tag); - let index: RadrootsCoopEventIndex = coop_index_from_event( + let index: RadrootsParsedEvent<RadrootsCoop> = coop_index_from_event( "id2".to_string(), TEST_PUBKEY_HEX.to_string(), 56, @@ -328,7 +326,7 @@ fn coop_metadata_and_index_decode_roundtrip() { ) .expect("coop index"); assert_eq!(index.event.kind, KIND_COOP); - assert_eq!(index.metadata.coop.d_tag, d_tag); + assert_eq!(index.data.data.d_tag, d_tag); } #[test] @@ -412,7 +410,7 @@ fn plot_metadata_and_index_decode_roundtrip() { let content = serde_json::to_string(&sample_plot(d_tag, TEST_PUBKEY_HEX, farm_d_tag)) .expect("plot content"); - let metadata: RadrootsPlotEventMetadata = plot_metadata_from_event( + let metadata: RadrootsParsedData<RadrootsPlot> = plot_metadata_from_event( "id3".to_string(), TEST_PUBKEY_HEX.to_string(), 57, @@ -421,9 +419,9 @@ fn plot_metadata_and_index_decode_roundtrip() { tags.clone(), ) .expect("plot metadata"); - assert_eq!(metadata.plot.d_tag, d_tag); + assert_eq!(metadata.data.d_tag, d_tag); - let index: RadrootsPlotEventIndex = plot_index_from_event( + let index: RadrootsParsedEvent<RadrootsPlot> = plot_index_from_event( "id3".to_string(), TEST_PUBKEY_HEX.to_string(), 57, @@ -434,7 +432,7 @@ fn plot_metadata_and_index_decode_roundtrip() { ) .expect("plot index"); assert_eq!(index.event.author, TEST_PUBKEY_HEX); - assert_eq!(index.metadata.plot.d_tag, d_tag); + assert_eq!(index.data.data.d_tag, d_tag); } #[test] @@ -503,7 +501,7 @@ fn document_metadata_and_index_decode_roundtrip() { serde_json::to_string(&sample_document(d_tag, TEST_PUBKEY_HEX, Some(&tag_address))) .expect("document content"); - let metadata: RadrootsDocumentEventMetadata = document_metadata_from_event( + let metadata: RadrootsParsedData<RadrootsDocument> = document_metadata_from_event( "id4".to_string(), TEST_PUBKEY_HEX.to_string(), 58, @@ -512,9 +510,9 @@ fn document_metadata_and_index_decode_roundtrip() { tags.clone(), ) .expect("document metadata"); - assert_eq!(metadata.document.d_tag, d_tag); + assert_eq!(metadata.data.d_tag, d_tag); - let index: RadrootsDocumentEventIndex = document_index_from_event( + let index: RadrootsParsedEvent<RadrootsDocument> = document_index_from_event( "id4".to_string(), TEST_PUBKEY_HEX.to_string(), 58, @@ -525,7 +523,7 @@ fn document_metadata_and_index_decode_roundtrip() { ) .expect("document index"); assert_eq!(index.event.kind, KIND_DOCUMENT); - assert_eq!(index.metadata.document.d_tag, d_tag); + assert_eq!(index.data.data.d_tag, d_tag); } #[test] @@ -563,7 +561,7 @@ fn resource_area_metadata_and_index_decode_roundtrip() { let d_tag = "AAAAAAAAAAAAAAAAAAAAAw"; let content = serde_json::to_string(&sample_resource_area(d_tag)).expect("area content"); let tags = d_tag_tags(d_tag); - let metadata: RadrootsResourceAreaEventMetadata = resource_area_metadata_from_event( + let metadata: RadrootsParsedData<RadrootsResourceArea> = resource_area_metadata_from_event( "id5".to_string(), TEST_PUBKEY_HEX.to_string(), 59, @@ -572,9 +570,9 @@ fn resource_area_metadata_and_index_decode_roundtrip() { tags.clone(), ) .expect("area metadata"); - assert_eq!(metadata.area.d_tag, d_tag); + assert_eq!(metadata.data.d_tag, d_tag); - let index: RadrootsResourceAreaEventIndex = resource_area_index_from_event( + let index: RadrootsParsedEvent<RadrootsResourceArea> = resource_area_index_from_event( "id5".to_string(), TEST_PUBKEY_HEX.to_string(), 59, @@ -585,7 +583,7 @@ fn resource_area_metadata_and_index_decode_roundtrip() { ) .expect("area index"); assert_eq!(index.event.id, "id5"); - assert_eq!(index.metadata.area.d_tag, d_tag); + assert_eq!(index.data.data.d_tag, d_tag); } #[test] @@ -616,7 +614,7 @@ fn resource_cap_metadata_and_index_decode_roundtrip() { let d_tag = "DAAAAAAAAAAAAAAAAAAAAA"; let content = serde_json::to_string(&sample_resource_cap(d_tag)).expect("cap content"); let tags = d_tag_tags(d_tag); - let metadata: RadrootsResourceHarvestCapEventMetadata = resource_cap_metadata_from_event( + let metadata: RadrootsParsedData<RadrootsResourceHarvestCap> = resource_cap_metadata_from_event( "id6".to_string(), TEST_PUBKEY_HEX.to_string(), 60, @@ -625,9 +623,9 @@ fn resource_cap_metadata_and_index_decode_roundtrip() { tags.clone(), ) .expect("cap metadata"); - assert_eq!(metadata.cap.d_tag, d_tag); + assert_eq!(metadata.data.d_tag, d_tag); - let index: RadrootsResourceHarvestCapEventIndex = resource_cap_index_from_event( + let index: RadrootsParsedEvent<RadrootsResourceHarvestCap> = resource_cap_index_from_event( "id6".to_string(), TEST_PUBKEY_HEX.to_string(), 60, @@ -638,5 +636,5 @@ fn resource_cap_metadata_and_index_decode_roundtrip() { ) .expect("cap index"); assert_eq!(index.event.sig, "sig6"); - assert_eq!(index.metadata.cap.d_tag, d_tag); + assert_eq!(index.data.data.d_tag, d_tag); } diff --git a/crates/events/src/account.rs b/crates/events/src/account.rs @@ -1,4 +1,4 @@ -use crate::{RadrootsNostrEvent, kinds::KIND_ACCOUNT_CLAIM as KIND_ACCOUNT_CLAIM_EVENT}; +use crate::{kinds::KIND_ACCOUNT_CLAIM as KIND_ACCOUNT_CLAIM_EVENT}; #[cfg(feature = "ts-rs")] use ts_rs::TS; @@ -7,26 +7,6 @@ use alloc::string::String; pub const KIND_ACCOUNT_CLAIM: u32 = KIND_ACCOUNT_CLAIM_EVENT; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsAccountClaimEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsAccountClaimEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsAccountClaimEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub account: RadrootsAccountClaim, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/app_data.rs b/crates/events/src/app_data.rs @@ -1,6 +1,6 @@ #![forbid(unsafe_code)] -use crate::{RadrootsNostrEvent, kinds::KIND_APP_DATA as KIND_APP_DATA_EVENT}; +use crate::{kinds::KIND_APP_DATA as KIND_APP_DATA_EVENT}; #[cfg(feature = "ts-rs")] use ts_rs::TS; @@ -9,26 +9,6 @@ use alloc::string::String; pub const KIND_APP_DATA: u32 = KIND_APP_DATA_EVENT; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsAppDataEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsAppDataEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsAppDataEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub app_data: RadrootsAppData, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/comment.rs b/crates/events/src/comment.rs @@ -1,31 +1,11 @@ #[cfg(feature = "ts-rs")] use ts_rs::TS; -use crate::{RadrootsNostrEvent, RadrootsNostrEventRef}; +use crate::{RadrootsNostrEventRef}; #[cfg(not(feature = "std"))] use alloc::string::String; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsCommentEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsCommentEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsCommentEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub comment: RadrootsComment, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/coop.rs b/crates/events/src/coop.rs @@ -1,6 +1,5 @@ #![forbid(unsafe_code)] -use crate::RadrootsNostrEvent; use crate::farm::RadrootsGcsLocation; #[cfg(feature = "ts-rs")] use ts_rs::TS; @@ -8,26 +7,6 @@ use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsCoopEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsCoopEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsCoopEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub coop: RadrootsCoop, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/document.rs b/crates/events/src/document.rs @@ -1,32 +1,11 @@ #![forbid(unsafe_code)] -use crate::RadrootsNostrEvent; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsDocumentEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsDocumentEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsDocumentEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub document: RadrootsDocument, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/farm.rs b/crates/events/src/farm.rs @@ -1,30 +1,9 @@ -use crate::RadrootsNostrEvent; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsFarmEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsFarmEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsFarmEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub farm: RadrootsFarm, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/follow.rs b/crates/events/src/follow.rs @@ -1,30 +1,9 @@ -use crate::RadrootsNostrEvent; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsFollowEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsFollowEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsFollowEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub follow: RadrootsFollow, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/geochat.rs b/crates/events/src/geochat.rs @@ -3,31 +3,10 @@ #[cfg(feature = "ts-rs")] use ts_rs::TS; -use crate::RadrootsNostrEvent; #[cfg(not(feature = "std"))] use alloc::string::String; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsGeoChatEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsGeoChatEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsGeoChatEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub geochat: RadrootsGeoChat, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/gift_wrap.rs b/crates/events/src/gift_wrap.rs @@ -1,32 +1,11 @@ #![forbid(unsafe_code)] -use crate::RadrootsNostrEvent; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::string::String; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsGiftWrapEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsGiftWrapEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsGiftWrapEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub gift_wrap: RadrootsGiftWrap, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/job_feedback.rs b/crates/events/src/job_feedback.rs @@ -2,33 +2,13 @@ use ts_rs::TS; use crate::{ - RadrootsNostrEvent, RadrootsNostrEventPtr, + RadrootsNostrEventPtr, job::{JobFeedbackStatus, JobPaymentRequest}, }; #[cfg(not(feature = "std"))] use alloc::string::String; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsJobFeedbackEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsJobFeedbackEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsJobFeedbackEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub job_feedback: RadrootsJobFeedback, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/job_request.rs b/crates/events/src/job_request.rs @@ -1,31 +1,11 @@ #[cfg(feature = "ts-rs")] use ts_rs::TS; -use crate::{RadrootsNostrEvent, job::JobInputType}; +use crate::{job::JobInputType}; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsJobRequestEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsJobRequestEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsJobRequestEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub job_request: RadrootsJobRequest, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/job_result.rs b/crates/events/src/job_result.rs @@ -2,33 +2,13 @@ use ts_rs::TS; use crate::{ - RadrootsNostrEvent, RadrootsNostrEventPtr, job::JobPaymentRequest, + RadrootsNostrEventPtr, job::JobPaymentRequest, job_request::RadrootsJobInput, }; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsJobResultEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsJobResultEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsJobResultEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub job_result: RadrootsJobResult, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/list.rs b/crates/events/src/list.rs @@ -1,30 +1,9 @@ -use crate::RadrootsNostrEvent; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsListEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsListEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsListEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub list: RadrootsList, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/list_set.rs b/crates/events/src/list_set.rs @@ -1,30 +1,10 @@ -use crate::{RadrootsNostrEvent, list::RadrootsListEntry}; +use crate::{list::RadrootsListEntry}; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsListSetEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsListSetEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsListSetEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub list_set: RadrootsListSet, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/listing.rs b/crates/events/src/listing.rs @@ -5,33 +5,12 @@ use radroots_core::{ #[cfg(feature = "ts-rs")] use ts_rs::TS; -use crate::RadrootsNostrEvent; use crate::plot::RadrootsPlotRef; use crate::resource_area::RadrootsResourceAreaRef; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsListingEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsListingEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsListingEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub listing: RadrootsListing, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/message.rs b/crates/events/src/message.rs @@ -1,32 +1,12 @@ #![forbid(unsafe_code)] -use crate::{RadrootsNostrEvent, RadrootsNostrEventPtr}; +use crate::{RadrootsNostrEventPtr}; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsMessageEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsMessageEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsMessageEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub message: RadrootsMessage, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/message_file.rs b/crates/events/src/message_file.rs @@ -1,33 +1,13 @@ #![forbid(unsafe_code)] use crate::message::RadrootsMessageRecipient; -use crate::{RadrootsNostrEvent, RadrootsNostrEventPtr}; +use crate::{RadrootsNostrEventPtr}; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsMessageFileEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsMessageFileEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsMessageFileEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub message_file: RadrootsMessageFile, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/plot.rs b/crates/events/src/plot.rs @@ -1,5 +1,4 @@ use crate::{ - RadrootsNostrEvent, farm::{RadrootsFarmRef, RadrootsGcsLocation}, }; #[cfg(feature = "ts-rs")] @@ -8,26 +7,6 @@ use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsPlotEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsPlotEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsPlotEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub plot: RadrootsPlot, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/post.rs b/crates/events/src/post.rs @@ -1,30 +1,9 @@ -use crate::RadrootsNostrEvent; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::string::String; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsPostEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsPostEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsPostEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub post: RadrootsPost, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/profile.rs b/crates/events/src/profile.rs @@ -1,4 +1,3 @@ -use crate::RadrootsNostrEvent; #[cfg(feature = "ts-rs")] use ts_rs::TS; @@ -46,28 +45,6 @@ pub fn radroots_profile_type_from_tag_value(value: &str) -> Option<RadrootsProfi } } -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsProfileEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsProfileEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsProfileEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - #[cfg_attr(feature = "ts-rs", ts(optional, type = "RadrootsProfileType | null"))] - pub profile_type: Option<RadrootsProfileType>, - pub profile: RadrootsProfile, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/reaction.rs b/crates/events/src/reaction.rs @@ -1,30 +1,10 @@ -use crate::{RadrootsNostrEvent, RadrootsNostrEventRef}; +use crate::{RadrootsNostrEventRef}; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::string::String; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsReactionEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsReactionEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsReactionEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub reaction: RadrootsReaction, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/resource_area.rs b/crates/events/src/resource_area.rs @@ -1,6 +1,5 @@ #![forbid(unsafe_code)] -use crate::RadrootsNostrEvent; use crate::farm::RadrootsGcsLocation; #[cfg(feature = "ts-rs")] use ts_rs::TS; @@ -8,26 +7,6 @@ use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsResourceAreaEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsResourceAreaEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsResourceAreaEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub area: RadrootsResourceArea, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/resource_cap.rs b/crates/events/src/resource_cap.rs @@ -2,7 +2,6 @@ use radroots_core::{RadrootsCoreDecimal, RadrootsCoreQuantity, RadrootsCoreUnit}; -use crate::RadrootsNostrEvent; use crate::resource_area::RadrootsResourceAreaRef; #[cfg(feature = "ts-rs")] use ts_rs::TS; @@ -10,26 +9,6 @@ use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::{string::String, vec::Vec}; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsResourceHarvestCapEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsResourceHarvestCapEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsResourceHarvestCapEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub cap: RadrootsResourceHarvestCap, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] diff --git a/crates/events/src/seal.rs b/crates/events/src/seal.rs @@ -1,32 +1,11 @@ #![forbid(unsafe_code)] -use crate::RadrootsNostrEvent; #[cfg(feature = "ts-rs")] use ts_rs::TS; #[cfg(not(feature = "std"))] use alloc::string::String; -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsSealEventIndex { - pub event: RadrootsNostrEvent, - pub metadata: RadrootsSealEventMetadata, -} - -#[cfg_attr(feature = "ts-rs", derive(TS))] -#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug)] -pub struct RadrootsSealEventMetadata { - pub id: String, - pub author: String, - pub published_at: u32, - pub kind: u32, - pub seal: RadrootsSeal, -} #[cfg_attr(feature = "ts-rs", derive(TS))] #[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))]