use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct NodeId {
pub file: String,
pub symbol: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[non_exhaustive]
pub enum EdgeKind {
Calls,
Imports,
Contains,
Inherits,
References,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Edge {
pub from: NodeId,
pub to: NodeId,
pub kind: EdgeKind,
pub line: u32,
}
#[derive(Debug, Clone)]
#[non_exhaustive]
pub struct GraphQuery {
pub symbol: String,
pub depth: u32,
pub incoming: bool,
}
#[derive(Debug, Clone)]
pub struct GraphResult {
pub nodes: Vec<NodeId>,
pub edges: Vec<Edge>,
}