use arbor_core::CodeNode;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct ImpactResult {
pub target: NodeInfo,
pub dependents: Vec<DependentInfo>,
pub total_affected: usize,
pub query_time_ms: u64,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct QueryResult {
pub nodes: Vec<NodeInfo>,
pub total_tokens: usize,
pub query_time_ms: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NodeInfo {
pub id: String,
pub name: String,
pub qualified_name: String,
pub kind: String,
pub file: String,
pub line_start: u32,
pub line_end: u32,
pub signature: Option<String>,
pub centrality: f64,
}
impl From<&CodeNode> for NodeInfo {
fn from(node: &CodeNode) -> Self {
Self {
id: node.id.clone(),
name: node.name.clone(),
qualified_name: node.qualified_name.clone(),
kind: node.kind.to_string(),
file: node.file.clone(),
line_start: node.line_start,
line_end: node.line_end,
signature: node.signature.clone(),
centrality: 0.0, }
}
}
#[derive(Debug, Serialize, Deserialize)]
pub struct DependentInfo {
pub node: NodeInfo,
pub relationship: String,
pub depth: usize,
}