storage/v2: Reduce the (In|Out)Edges tuple to only EdgeAccessor
Summary: The first 2 tuple elements are redundant as they are available through EdgeAccessor and they needlessly complicate the usage of the API. Reviewers: mtomic, mferencevic Reviewed By: mtomic Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D2200
This commit is contained in:
parent
d4df7d9d60
commit
bf4f69f2e5
@ -304,7 +304,7 @@ Result<std::unordered_map<uint64_t, PropertyValue>> VertexAccessor::Properties(
|
||||
std::move(properties)};
|
||||
}
|
||||
|
||||
Result<std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>>>
|
||||
Result<std::vector<EdgeAccessor>>
|
||||
VertexAccessor::InEdges(const std::vector<uint64_t> &edge_types, View view) {
|
||||
std::vector<std::tuple<uint64_t, Vertex *, Edge *>> in_edges;
|
||||
bool deleted = false;
|
||||
@ -356,27 +356,21 @@ VertexAccessor::InEdges(const std::vector<uint64_t> &edge_types, View view) {
|
||||
}
|
||||
});
|
||||
if (deleted) {
|
||||
return Result<
|
||||
std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>>>{
|
||||
Error::DELETED_OBJECT};
|
||||
return Result<std::vector<EdgeAccessor>>(Error::DELETED_OBJECT);
|
||||
}
|
||||
std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>> ret;
|
||||
std::vector<EdgeAccessor> ret;
|
||||
ret.reserve(in_edges.size());
|
||||
for (const auto &item : in_edges) {
|
||||
auto [edge_type, from_vertex, edge] = item;
|
||||
if (edge_types.empty() || std::find(edge_types.begin(), edge_types.end(),
|
||||
edge_type) != edge_types.end()) {
|
||||
ret.emplace_back(
|
||||
edge_type, VertexAccessor{from_vertex, transaction_},
|
||||
EdgeAccessor{edge, edge_type, from_vertex, vertex_, transaction_});
|
||||
ret.emplace_back(edge, edge_type, from_vertex, vertex_, transaction_);
|
||||
}
|
||||
}
|
||||
return Result<
|
||||
std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>>>{
|
||||
std::move(ret)};
|
||||
return Result<decltype(ret)>(std::move(ret));
|
||||
}
|
||||
|
||||
Result<std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>>>
|
||||
Result<std::vector<EdgeAccessor>>
|
||||
VertexAccessor::OutEdges(const std::vector<uint64_t> &edge_types, View view) {
|
||||
std::vector<std::tuple<uint64_t, Vertex *, Edge *>> out_edges;
|
||||
bool deleted = false;
|
||||
@ -428,24 +422,18 @@ VertexAccessor::OutEdges(const std::vector<uint64_t> &edge_types, View view) {
|
||||
}
|
||||
});
|
||||
if (deleted) {
|
||||
return Result<
|
||||
std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>>>{
|
||||
Error::DELETED_OBJECT};
|
||||
return Result<std::vector<EdgeAccessor>>(Error::DELETED_OBJECT);
|
||||
}
|
||||
std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>> ret;
|
||||
std::vector<EdgeAccessor> ret;
|
||||
ret.reserve(out_edges.size());
|
||||
for (const auto &item : out_edges) {
|
||||
auto [edge_type, to_vertex, edge] = item;
|
||||
if (edge_types.empty() || std::find(edge_types.begin(), edge_types.end(),
|
||||
edge_type) != edge_types.end()) {
|
||||
ret.emplace_back(
|
||||
edge_type, VertexAccessor{to_vertex, transaction_},
|
||||
EdgeAccessor{edge, edge_type, vertex_, to_vertex, transaction_});
|
||||
ret.emplace_back(edge, edge_type, vertex_, to_vertex, transaction_);
|
||||
}
|
||||
}
|
||||
return Result<
|
||||
std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>>>{
|
||||
std::move(ret)};
|
||||
return Result<decltype(ret)>(std::move(ret));
|
||||
}
|
||||
|
||||
} // namespace storage
|
||||
|
@ -39,10 +39,10 @@ class VertexAccessor final {
|
||||
|
||||
Result<std::unordered_map<uint64_t, PropertyValue>> Properties(View view);
|
||||
|
||||
Result<std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>>>
|
||||
Result<std::vector<EdgeAccessor>>
|
||||
InEdges(const std::vector<uint64_t> &edge_types, View view);
|
||||
|
||||
Result<std::vector<std::tuple<uint64_t, VertexAccessor, EdgeAccessor>>>
|
||||
Result<std::vector<EdgeAccessor>>
|
||||
OutEdges(const std::vector<uint64_t> &edge_types, View view);
|
||||
|
||||
Gid Gid() const { return vertex_->gid; }
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -124,7 +124,7 @@ TEST(StorageV2Gc, Sanity) {
|
||||
vertex->OutEdges(std::vector<uint64_t>{}, storage::View::NEW);
|
||||
if (i % 5 != 4 && i % 3 != 2) {
|
||||
EXPECT_EQ(out_edges.GetReturn().size(), 1);
|
||||
EXPECT_EQ(std::get<2>(out_edges.GetReturn().at(0)).EdgeType(), i);
|
||||
EXPECT_EQ(out_edges.GetReturn().at(0).EdgeType(), i);
|
||||
} else {
|
||||
EXPECT_TRUE(out_edges.GetReturn().empty());
|
||||
}
|
||||
@ -133,7 +133,7 @@ TEST(StorageV2Gc, Sanity) {
|
||||
vertex->InEdges(std::vector<uint64_t>{}, storage::View::NEW);
|
||||
if (i % 5 != 1 && i % 3 != 1) {
|
||||
EXPECT_EQ(in_edges.GetReturn().size(), 1);
|
||||
EXPECT_EQ(std::get<2>(in_edges.GetReturn().at(0)).EdgeType(),
|
||||
EXPECT_EQ(in_edges.GetReturn().at(0).EdgeType(),
|
||||
(i + 999) % 1000);
|
||||
} else {
|
||||
EXPECT_TRUE(in_edges.GetReturn().empty());
|
||||
|
Loading…
Reference in New Issue
Block a user