Skip to content

Commit 24abf0a

Browse files
committed
fixed PR comments
1 parent 529502e commit 24abf0a

File tree

3 files changed

+55
-16
lines changed

3 files changed

+55
-16
lines changed

redisgraph/path.py

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,57 @@
1+
from .node import Node
2+
from .edge import Edge
13

24
class Path(object):
35

4-
def __init__(self, nodes, relationships):
6+
def __init__(self, nodes, edges):
7+
assert(isinstance(nodes, list) and isinstance(edges, list))
58
self.nodes = nodes
6-
self.relationships = relationships
9+
self.edges = edges
10+
self.append_type = Node
11+
12+
@classmethod
13+
def new_empty_path(cls):
14+
return cls([], [])
15+
16+
@classmethod
17+
def new_path(cls, nodes, edges):
18+
return cls(nodes, edges)
719

820
def nodes(self):
921
return self.nodes
1022

11-
def relationships(self):
12-
return self.relationships
23+
def edges(self):
24+
return self.edges
1325

1426
def get_node(self, index):
1527
return self.nodes[index]
1628

1729
def get_relationship(self, index):
18-
return self.relationships[index]
30+
return self.edges[index]
1931

2032
def first_node(self):
2133
return self.nodes[0]
2234

2335
def last_node(self):
2436
return self.nodes[-1]
2537

38+
def edge_count(self):
39+
return len(self.edges)
40+
41+
def nodes_count(self):
42+
return len(self.nodes)
43+
44+
def add_node(self, node):
45+
assert(isinstance(node, self.append_type))
46+
self.nodes.append(node)
47+
self.append_type = Edge
48+
return self
49+
50+
def add_edge(self, edge):
51+
assert(isinstance(edge, self.append_type))
52+
self.edges.append(edge)
53+
self.append_type = Node
54+
return self
55+
2656
def __eq__(self, other):
27-
return self.nodes == other.nodes and self.relationships == other.relationships
57+
return self.nodes == other.nodes and self.edges == other.edges

redisgraph/query_result.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,10 @@ def parse_edge(self, cell):
126126
properties = self.parse_entity_properties(cell[4])
127127
return Edge(src_node_id, relation, dest_node_id, edge_id=edge_id, properties=properties)
128128

129-
130129
def parse_path(self, cell):
131130
nodes = self.parse_scalar(cell[0])
132-
relationships = self.parse_scalar(cell[1])
133-
return Path(nodes, relationships)
131+
edges = self.parse_scalar(cell[1])
132+
return Path.new_path(nodes, edges)
134133

135134
def parse_scalar(self, cell):
136135
scalar_type = int(cell[0])

test.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,21 +69,31 @@ def test_array_functions(self):
6969
def test_path(self):
7070
redis_graph = Graph('social', self.r)
7171

72-
query = """CREATE (a:L1)-[:R1 {value:1}]->(b:L1)-[:R1 {value:2}]->(c:L1)"""
73-
redis_graph.query(query)
74-
query = "MATCH p=(:L1)-[:R1]->(:L1) RETURN p"
7572
node0 = Node(node_id=0, label="L1")
76-
edge01 = Edge(0, "R1", 1, edge_id=0, properties={'value': 1})
7773
node1 = Node(node_id=1, label="L1")
78-
edge12 = Edge(1, "R1", 2, edge_id=1, properties={'value': 2})
7974
node2 = Node(node_id=2, label="L1")
75+
edge01 = Edge(node0, "R1", node1, edge_id=0, properties={'value': 1})
76+
edge12 = Edge(node1, "R1", node2, edge_id=1, properties={'value': 2})
77+
78+
redis_graph.add_node(node0)
79+
redis_graph.add_node(node1)
80+
redis_graph.add_node(node2)
81+
redis_graph.add_edge(edge01)
82+
redis_graph.add_edge(edge12)
83+
84+
redis_graph.commit()
8085

81-
path01 = Path([node0, node1], [edge01])
82-
path12 = Path([node1, node2], [edge12])
86+
path01 = Path.new_empty_path().add_node(node0).add_edge(edge01).add_node(node1)
87+
path12 = Path.new_empty_path().add_node(node1).add_edge(edge12).add_node(node2)
8388
expected_results = [[path01], [path12]]
89+
90+
query = "MATCH p=(:L1)-[:R1]->(:L1) RETURN p"
8491
result = redis_graph.query(query)
8592
self.assertEqual(expected_results, result.result_set)
8693

94+
# All done, remove graph.
95+
redis_graph.delete()
96+
8797

8898
if __name__ == '__main__':
8999
unittest.main()

0 commit comments

Comments
 (0)