Skip to content

Commit 4ed7574

Browse files
authored
feat: fix polardb graph (#411)
1 parent 7eb531b commit 4ed7574

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

src/memos/graph_dbs/polardb.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,6 +1178,8 @@ def get_subgraph(
11781178
MATCH(center: Memory)-[r * 1..{depth}]->(neighbor:Memory)
11791179
WHERE
11801180
center.id = '{center_id}'
1181+
AND center.status = '{center_status}'
1182+
AND center.user_name = '{user_name}'
11811183
RETURN
11821184
collect(DISTINCT
11831185
center), collect(DISTINCT
@@ -1255,7 +1257,9 @@ def get_subgraph(
12551257
}
12561258
)
12571259

1258-
return {"core_node": core_node, "neighbors": neighbors, "edges": edges}
1260+
return self._convert_graph_edges(
1261+
{"core_node": core_node, "neighbors": neighbors, "edges": edges}
1262+
)
12591263

12601264
except Exception as e:
12611265
logger.error(f"Failed to get subgraph: {e}", exc_info=True)
@@ -2839,3 +2843,25 @@ def get_edges(
28392843
except Exception as e:
28402844
logger.error(f"Failed to get edges: {e}", exc_info=True)
28412845
return []
2846+
2847+
def _convert_graph_edges(self, core_node: dict) -> dict:
2848+
import copy
2849+
2850+
data = copy.deepcopy(core_node)
2851+
id_map = {}
2852+
core_node = data.get("core_node", {})
2853+
core_meta = core_node.get("metadata", {})
2854+
if "graph_id" in core_meta and "id" in core_node:
2855+
id_map[core_meta["graph_id"]] = core_node["id"]
2856+
for neighbor in data.get("neighbors", []):
2857+
n_meta = neighbor.get("metadata", {})
2858+
if "graph_id" in n_meta and "id" in neighbor:
2859+
id_map[n_meta["graph_id"]] = neighbor["id"]
2860+
for edge in data.get("edges", []):
2861+
src = edge.get("source")
2862+
tgt = edge.get("target")
2863+
if src in id_map:
2864+
edge["source"] = id_map[src]
2865+
if tgt in id_map:
2866+
edge["target"] = id_map[tgt]
2867+
return data

0 commit comments

Comments
 (0)