2024-01-05 20:48:23 +01:00
|
|
|
use serde::{Deserialize, Serialize};
|
2023-12-07 19:51:19 +01:00
|
|
|
|
2024-03-23 18:39:06 +01:00
|
|
|
use crate::types::{ElementContent, ElementId, Family, MessageId, PotId};
|
2023-12-07 19:51:19 +01:00
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
|
|
pub struct Message {
|
|
|
|
id: MessageId,
|
|
|
|
signature: MessageSignature,
|
|
|
|
content: MessageContent,
|
|
|
|
}
|
|
|
|
|
2024-01-05 21:34:37 +01:00
|
|
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
|
|
|
pub struct MessageRelations {
|
|
|
|
pub parents: Vec<MessageId>,
|
|
|
|
}
|
|
|
|
|
2023-12-07 19:51:19 +01:00
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
|
|
pub enum MessageContent {
|
|
|
|
Hello {
|
|
|
|
peer_name: String,
|
|
|
|
},
|
2024-03-23 17:46:25 +01:00
|
|
|
JoinFamily,
|
|
|
|
AddedToFamily {
|
|
|
|
family: Family,
|
|
|
|
},
|
|
|
|
LeaveFamily,
|
2023-12-07 19:51:19 +01:00
|
|
|
CreateElement {
|
|
|
|
id: ElementId,
|
|
|
|
content: ElementContent,
|
2024-01-21 12:24:05 +01:00
|
|
|
pot: PotId,
|
2023-12-07 19:51:19 +01:00
|
|
|
},
|
2024-02-13 17:39:56 +01:00
|
|
|
UpdateElement {
|
2023-12-07 19:51:19 +01:00
|
|
|
id: ElementId,
|
|
|
|
content: ElementContent,
|
|
|
|
},
|
|
|
|
RemoveElement {
|
|
|
|
id: ElementId,
|
2024-01-05 20:48:23 +01:00
|
|
|
},
|
2024-01-21 12:24:05 +01:00
|
|
|
AddPot {
|
|
|
|
id: PotId,
|
|
|
|
app_type: String,
|
2024-03-23 17:46:25 +01:00
|
|
|
},
|
2023-12-07 19:51:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
|
|
pub struct MessageSignature {}
|
|
|
|
|
|
|
|
impl Message {
|
|
|
|
pub fn new(content: MessageContent) -> Self {
|
|
|
|
Message {
|
|
|
|
id: MessageId::new(),
|
2024-01-05 20:48:23 +01:00
|
|
|
signature: MessageSignature {},
|
2023-12-07 19:51:19 +01:00
|
|
|
content: content,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn content(&self) -> &MessageContent {
|
|
|
|
&self.content
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn id(&self) -> &MessageId {
|
|
|
|
&self.id
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl MessageSignature {
|
|
|
|
pub fn verify(&self, _content: &MessageContent) -> bool {
|
|
|
|
true
|
|
|
|
}
|
2024-01-05 20:48:23 +01:00
|
|
|
}
|