11"""TuGraph Connector."""
22
33import json
4- from typing import Dict , Generator , List , cast
4+ from typing import Dict , Generator , List , Tuple , cast
55
66from .base import BaseConnector
77
@@ -21,8 +21,7 @@ def __init__(self, driver, graph):
2121 self ._session = None
2222
2323 def create_graph (self , graph_name : str ) -> None :
24- """Create a new graph."""
25- # run the query to get vertex labels
24+ """Create a new graph in the database if it doesn't already exist."""
2625 try :
2726 with self ._driver .session (database = "default" ) as session :
2827 graph_list = session .run ("CALL dbms.graph.listGraphs()" ).data ()
@@ -32,10 +31,10 @@ def create_graph(self, graph_name: str) -> None:
3231 f"CALL dbms.graph.createGraph('{ graph_name } ', '', 2048)"
3332 )
3433 except Exception as e :
35- raise Exception (f"Failed to create graph '{ graph_name } ': { str (e )} " )
34+ raise Exception (f"Failed to create graph '{ graph_name } ': { str (e )} " ) from e
3635
3736 def delete_graph (self , graph_name : str ) -> None :
38- """Delete a graph."""
37+ """Delete a graph in the database if it exists ."""
3938 with self ._driver .session (database = "default" ) as session :
4039 graph_list = session .run ("CALL dbms.graph.listGraphs()" ).data ()
4140 exists = any (item ["graph_name" ] == graph_name for item in graph_list )
@@ -61,17 +60,20 @@ def from_uri_db(
6160 "`pip install neo4j`"
6261 ) from err
6362
64- def get_table_names (self ) -> Dict [ str , List [str ]]:
63+ def get_table_names (self ) -> Tuple [ List [ str ] , List [str ]]:
6564 """Get all table names from the TuGraph by Neo4j driver."""
66- # run the query to get vertex labels
6765 with self ._driver .session (database = self ._graph ) as session :
68- v_result = session .run ("CALL db.vertexLabels()" ).data ()
69- v_data = [table_name ["label" ] for table_name in v_result ]
66+ # Run the query to get vertex labels
67+ raw_vertex_labels : Dict [str , str ] = session .run (
68+ "CALL db.vertexLabels()"
69+ ).data ()
70+ vertex_labels = [table_name ["label" ] for table_name in raw_vertex_labels ]
71+
72+ # Run the query to get edge labels
73+ raw_edge_labels : Dict [str , str ] = session .run ("CALL db.edgeLabels()" ).data ()
74+ edge_labels = [table_name ["label" ] for table_name in raw_edge_labels ]
7075
71- # run the query to get edge labels
72- e_result = session .run ("CALL db.edgeLabels()" ).data ()
73- e_data = [table_name ["label" ] for table_name in e_result ]
74- return {"vertex_tables" : v_data , "edge_tables" : e_data }
76+ return vertex_labels , edge_labels
7577
7678 def get_grants (self ):
7779 """Get grants."""
@@ -100,7 +102,7 @@ def run(self, query: str, fetch: str = "all") -> List:
100102 result = session .run (query )
101103 return list (result )
102104 except Exception as e :
103- raise Exception (f"Query execution failed: { e } " )
105+ raise Exception (f"Query execution failed: { e } \n Query: { query } " ) from e
104106
105107 def run_stream (self , query : str ) -> Generator :
106108 """Run GQL."""
@@ -109,11 +111,15 @@ def run_stream(self, query: str) -> Generator:
109111 yield from result
110112
111113 def get_columns (self , table_name : str , table_type : str = "vertex" ) -> List [Dict ]:
112- """Get fields about specified graph.
114+ """Retrieve the column for a specified vertex or edge table in the graph db.
115+
116+ This function queries the schema of a given table (vertex or edge) and returns
117+ detailed information about its columns (properties).
113118
114119 Args:
115120 table_name (str): table name (graph name)
116121 table_type (str): table type (vertex or edge)
122+
117123 Returns:
118124 columns: List[Dict], which contains name: str, type: str,
119125 default_expression: str, is_in_primary_key: bool, comment: str
@@ -146,8 +152,8 @@ def get_indexes(self, table_name: str, table_type: str = "vertex") -> List[Dict]
146152 """Get table indexes about specified table.
147153
148154 Args:
149- table_name: (str) table name
150- table_type: (str) 'vertex' | 'edge'
155+ table_name (str): table name
156+ table_type (str): 'vertex' | 'edge'
151157 Returns:
152158 List[Dict]:eg:[{'name': 'idx_key', 'column_names': ['id']}]
153159 """
0 commit comments