use atrium_api::record::KnownRecord;
use serde::Deserialize;
use crate::{
events::EventInfo,
exports,
};
#[derive(Deserialize, Debug)]
#[serde(untagged, rename_all = "snake_case")]
pub enum CommitEvent {
Create {
#[serde(flatten)]
info: EventInfo,
commit: CommitData,
},
Update {
#[serde(flatten)]
info: EventInfo,
commit: CommitData,
},
Delete {
#[serde(flatten)]
info: EventInfo,
commit: CommitInfo,
},
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "snake_case")]
pub enum CommitType {
Create,
Update,
Delete,
}
#[derive(Deserialize, Debug)]
pub struct CommitInfo {
pub operation: CommitType,
pub rev: String,
pub rkey: String,
pub collection: exports::Nsid,
}
#[derive(Deserialize, Debug)]
pub struct CommitData {
#[serde(flatten)]
pub info: CommitInfo,
pub cid: exports::Cid,
pub record: KnownRecord,
}