use rkyv::{Archive, Deserialize, Serialize};
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct CsrRow {
pub vertex: u32,
pub neighbors: Vec<u32>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct CsrAdjMap {
pub rows: Vec<CsrRow>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct CsrEtype {
pub etype: u32,
pub out_adj: CsrAdjMap,
pub in_adj: CsrAdjMap,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct CsrData {
pub etypes: Vec<CsrEtype>,
pub edge_count: u64,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub enum ColumnData {
Int { data: Vec<i64>, present: Vec<u64> },
Float { data: Vec<f64>, present: Vec<u64> },
Bool { data: Vec<u8>, present: Vec<u64> },
Str {
ids: Vec<u32>,
present: Vec<u64>,
strings: Vec<String>,
},
Mixed(Vec<u8>),
Vector {
dim: u32,
data: Vec<f64>,
present: Vec<u64>,
},
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct FieldEntry {
pub name: String,
pub col: ColumnData,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct ColumnsData {
pub fields: Vec<FieldEntry>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct IdMapData {
pub to_key: Vec<String>,
pub tombstones: Vec<u32>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct InternerData {
pub to_str: Vec<String>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct EdgePropEntry {
pub etype: u32,
pub src: u32,
pub dst: u32,
pub props_blob: Vec<u8>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct EdgePropsData {
pub entries: Vec<EdgePropEntry>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct HnswRuleEntry {
pub name: String,
pub src_blob: Vec<u8>,
pub dst_blob: Vec<u8>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct HnswSectionData {
pub rules: Vec<HnswRuleEntry>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct Triple {
pub etype: u32,
pub src: u32,
pub dst: u32,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct ProvenanceEntry {
pub rule: String,
pub triples: Vec<Triple>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct ProvenanceSectionData {
pub entries: Vec<ProvenanceEntry>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct RuleTripEntry {
pub rule: String,
pub tripped: bool,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct RuleFireEntry {
pub rule: String,
pub fires: u64,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct RulesMetaData {
pub rule_defs: Vec<Vec<u8>>,
pub tripped: Vec<RuleTripEntry>,
pub fires: Vec<RuleFireEntry>,
}
#[derive(Archive, Serialize, Deserialize, Clone, Debug)]
pub struct ViewsSectionData {
pub view_defs: Vec<Vec<u8>>,
}
pub type ArchivedCsr = ArchivedCsrData;
pub type ArchivedColumns = ArchivedColumnsData;
pub type ArchivedIdMap = ArchivedIdMapData;
pub type ArchivedInterner = ArchivedInternerData;
pub type ArchivedEdgeProps = ArchivedEdgePropsData;
pub type ArchivedHnsw = ArchivedHnswSectionData;
pub type ArchivedProvenance = ArchivedProvenanceSectionData;
pub type ArchivedRulesMeta = ArchivedRulesMetaData;
pub type ArchivedViews = ArchivedViewsSectionData;