1use serde::{Deserialize, Serialize};
2
3use crate::{message::Message, store::Record};
4
5#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
6#[serde(untagged)]
7pub enum Reply {
8 ProtocolsQuery(Vec<Message>),
9 RecordsSync(Box<RecordsSyncReply>),
10 RecordsQuery(RecordsQueryReply),
11 RecordsRead(Box<RecordsReadReply>),
12}
13
14#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
15pub struct RecordsQueryReply {
16 pub entries: Vec<Message>,
17}
18
19#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
20pub struct RecordsReadReply {
21 pub entry: Option<Message>,
22}
23
24#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
25pub struct RecordsSyncReply {
26 pub conflict: Vec<Message>,
28 pub local_only: Vec<String>,
30 pub remote_only: Vec<Record>,
32}