Fix formatting again
This commit is contained in:
@@ -361,3 +361,56 @@ class LocalGraph:
|
||||
cross_file_in.append(f"{rel_type}:{pred_type}:{pred_name}@{pred_file}")
|
||||
|
||||
return cross_file_out, cross_file_in
|
||||
|
||||
def get_node_by_id(self, node_id: str) -> Optional[dict]:
|
||||
"""Get node data by ID for graph queries."""
|
||||
if node_id in self.graph.nodes:
|
||||
return dict(self.graph.nodes[node_id])
|
||||
return None
|
||||
|
||||
def get_relationships_for_query(self, node_id: str, max_relationships: int = 10) -> dict:
|
||||
"""Get relationships in a format suitable for graph queries."""
|
||||
if node_id not in self.graph.nodes:
|
||||
return {}
|
||||
|
||||
result = {
|
||||
'node_id': node_id,
|
||||
'outgoing': [],
|
||||
'incoming': []
|
||||
}
|
||||
|
||||
node_file = self.graph.nodes[node_id].get('file', '')
|
||||
|
||||
# Outgoing relationships
|
||||
for neighbor_id in list(self.graph.successors(node_id))[:max_relationships]:
|
||||
if neighbor_id in self.graph.nodes:
|
||||
edge_data = self.graph.edges[node_id, neighbor_id]
|
||||
neighbor_data = self.graph.nodes[neighbor_id]
|
||||
|
||||
rel_info = {
|
||||
'type': edge_data.get('type', 'related'),
|
||||
'target_id': neighbor_id,
|
||||
'target_name': neighbor_data.get('name', ''),
|
||||
'target_type': neighbor_data.get('type', ''),
|
||||
'target_file': neighbor_data.get('file', ''),
|
||||
'cross_file': neighbor_data.get('file', '') != node_file
|
||||
}
|
||||
result['outgoing'].append(rel_info)
|
||||
|
||||
# Incoming relationships
|
||||
for predecessor_id in list(self.graph.predecessors(node_id))[:max_relationships]:
|
||||
if predecessor_id in self.graph.nodes:
|
||||
edge_data = self.graph.edges[predecessor_id, node_id]
|
||||
predecessor_data = self.graph.nodes[predecessor_id]
|
||||
|
||||
rel_info = {
|
||||
'type': edge_data.get('type', 'related'),
|
||||
'source_id': predecessor_id,
|
||||
'source_name': predecessor_data.get('name', ''),
|
||||
'source_type': predecessor_data.get('type', ''),
|
||||
'source_file': predecessor_data.get('file', ''),
|
||||
'cross_file': predecessor_data.get('file', '') != node_file
|
||||
}
|
||||
result['incoming'].append(rel_info)
|
||||
|
||||
return result
|
||||
|
||||
Reference in New Issue
Block a user