This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

at main 2.0 kB View raw
1use jacquard_common::DefaultStr; 2use jacquard_common::types::did::Did; 3use jacquard_common::types::nsid::Nsid; 4use jacquard_common::types::recordkey::Rkey; 5use jacquard_common::types::string::Cid; 6use jacquard_common::types::tid::Tid; 7use serde::Deserialize; 8use serde_json::value::RawValue; 9 10#[derive(Debug, Deserialize)] 11pub struct HydrantFrame { 12 pub id: u64, 13 #[serde(rename = "type")] 14 pub kind: FrameKind, 15 #[serde(default)] 16 pub record: Option<RecordFrame>, 17} 18 19#[derive(Clone, Copy, Debug, Eq, PartialEq)] 20pub enum FrameKind { 21 Record, 22 Identity, 23 Account, 24 Other, 25} 26 27impl<'de> Deserialize<'de> for FrameKind { 28 fn deserialize<D>(d: D) -> Result<Self, D::Error> 29 where 30 D: serde::Deserializer<'de>, 31 { 32 let s = <std::borrow::Cow<'de, str>>::deserialize(d)?; 33 Ok(match s.as_ref() { 34 "record" => Self::Record, 35 "identity" => Self::Identity, 36 "account" => Self::Account, 37 _ => Self::Other, 38 }) 39 } 40} 41 42#[derive(Clone, Debug, Deserialize)] 43pub struct HydrantStreamErrorFrame { 44 pub error: String, 45 #[serde(default)] 46 pub message: Option<String>, 47} 48 49#[derive(Debug, Deserialize)] 50pub struct RecordFrame { 51 pub live: bool, 52 pub did: Did<DefaultStr>, 53 pub rev: Tid, 54 pub collection: Nsid<DefaultStr>, 55 pub rkey: Rkey<DefaultStr>, 56 pub action: RecordAction, 57 #[serde(default)] 58 pub record: Option<Box<RawValue>>, 59 #[serde(default)] 60 pub cid: Option<Cid<DefaultStr>>, 61} 62 63#[derive(Clone, Copy, Debug, Eq, PartialEq)] 64pub enum RecordAction { 65 Create, 66 Update, 67 Delete, 68 Other, 69} 70 71impl<'de> Deserialize<'de> for RecordAction { 72 fn deserialize<D>(d: D) -> Result<Self, D::Error> 73 where 74 D: serde::Deserializer<'de>, 75 { 76 let s = <std::borrow::Cow<'de, str>>::deserialize(d)?; 77 Ok(match s.as_ref() { 78 "create" => Self::Create, 79 "update" => Self::Update, 80 "delete" => Self::Delete, 81 _ => Self::Other, 82 }) 83 } 84}