use facet::Facet;
use moire_trace_types::BacktraceId;
use crate::EntityId;
#[derive(Facet)]
pub struct Edge {
pub src: EntityId,
pub dst: EntityId,
pub backtrace: BacktraceId,
pub kind: EdgeKind,
}
impl Edge {
pub fn new(src: EntityId, dst: EntityId, kind: EdgeKind, backtrace: BacktraceId) -> Self {
Self {
src,
dst,
backtrace,
kind,
}
}
}
#[derive(Facet, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(u8)]
#[facet(rename_all = "snake_case")]
pub enum EdgeKind {
Polls,
WaitingOn,
PairedWith,
HeldBy,
}
crate::impl_sqlite_json!(EdgeKind);
crate::declare_edge_kind_slots!(
PollsEdgeKindSlot::Polls,
WaitingOnEdgeKindSlot::WaitingOn,
PairedWithEdgeKindSlot::PairedWith,
HeldByEdgeKindSlot::HeldBy,
);