From 3dc95e947d4774e834257e924f0d9690bb538ab7 Mon Sep 17 00:00:00 2001 From: Ryan Ruckley Date: Sat, 12 Oct 2024 15:11:19 +1100 Subject: [PATCH] link entities --- src/tmf667/document.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/tmf667/document.rs b/src/tmf667/document.rs index ec254b0..dd326c3 100644 --- a/src/tmf667/document.rs +++ b/src/tmf667/document.rs @@ -5,6 +5,8 @@ use crate::{ }; use tmflib_derive::{HasId,HasName,HasLastUpdate,HasRelatedParty,HasDescription}; use crate::common::related_party::RelatedParty; +use crate::common::related_entity::RelatedEntity; +use crate::vec_insert; use serde::{Deserialize,Serialize}; const CLASS_PATH : &str = "document"; @@ -56,7 +58,10 @@ pub struct Document { #[serde(skip_serializing_if = "Option::is_none")] creation_date: Option, // Referenced objects + /// Parties related_party: Option>, + /// Related Entities + related_entity : Option>, /// Attachement attachment : AttachmentRefOrValue, } @@ -88,6 +93,17 @@ impl Document { self.document_type = Some(r#type.into()); self } + + /// Link another TMF entity during creation + pub fn link(mut self, entity : T) -> Document { + self.link_entity(entity); + self + } + + /// Link another TMF entity into this document + pub fn link_entity(&mut self, entity : T) { + vec_insert(&mut self.related_entity,RelatedEntity::from(entity)); + } } impl From for Document {