tap_msg/message/
relationship.rs1use crate::error::{Error, Result};
7use crate::TapMessage;
8use serde::{Deserialize, Serialize};
9
10#[derive(Debug, Clone, Serialize, Deserialize, TapMessage)]
14#[tap(message_type = "https://tap.rsvp/schema/1.0#ConfirmRelationship")]
15pub struct ConfirmRelationship {
16 #[serde(rename = "transfer_id")]
18 #[tap(thread_id)]
19 pub transaction_id: String,
20
21 pub agent_id: String,
23
24 pub relationship_type: String,
26}
27
28impl ConfirmRelationship {
29 pub fn new(transaction_id: &str, agent_id: &str, relationship_type: &str) -> Self {
31 Self {
32 transaction_id: transaction_id.to_string(),
33 agent_id: agent_id.to_string(),
34 relationship_type: relationship_type.to_string(),
35 }
36 }
37}
38
39impl ConfirmRelationship {
42 pub fn validate_relationship(&self) -> Result<()> {
44 if self.transaction_id.is_empty() {
45 return Err(Error::Validation(
46 "Transfer ID is required in ConfirmRelationship".to_string(),
47 ));
48 }
49
50 if self.agent_id.is_empty() {
51 return Err(Error::Validation(
52 "Agent ID is required in ConfirmRelationship".to_string(),
53 ));
54 }
55
56 if self.relationship_type.is_empty() {
57 return Err(Error::Validation(
58 "Relationship type is required in ConfirmRelationship".to_string(),
59 ));
60 }
61
62 Ok(())
63 }
64}