use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize)]
pub struct GroupManageEvent {
#[serde(skip)]
pub event_id: Option<String>,
pub timestamp: Option<u64>,
pub group_openid: Option<String>,
pub op_member_openid: Option<String>,
}
impl GroupManageEvent {
pub(crate) fn new(event_id: Option<String>, data: &serde_json::Value) -> Self {
let wire: GroupManageWire = serde_json::from_value(data.clone()).unwrap_or_default();
Self {
event_id,
timestamp: wire.timestamp,
group_openid: wire.group_openid,
op_member_openid: wire.op_member_openid,
}
}
}
#[derive(Debug, Default, Deserialize)]
struct GroupManageWire {
#[serde(default)]
timestamp: Option<u64>,
#[serde(default)]
group_openid: Option<String>,
#[serde(default)]
op_member_openid: Option<String>,
}