Skip to content

Commit b9fb3c1

Browse files
committed
feat: add count method to DefaultTinkerpopGraphDatabaseManager
Implemented a count method for SelectQuery to enhance query capabilities and improve performance in counting entities within the graph database. Signed-off-by: Maximillian Arruda <[email protected]>
1 parent ff0d845 commit b9fb3c1

File tree

1 file changed

+29
-18
lines changed

1 file changed

+29
-18
lines changed

jnosql-tinkerpop/src/main/java/org/eclipse/jnosql/databases/tinkerpop/communication/DefaultTinkerpopGraphDatabaseManager.java

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -127,37 +127,32 @@ public Iterable<CommunicationEntity> update(Iterable<CommunicationEntity> entiti
127127
public void delete(DeleteQuery query) {
128128
Objects.requireNonNull(query, "delete is required");
129129
GraphTraversal<Vertex, Vertex> traversal = graph.traversal().V().hasLabel(query.name());
130-
query.condition().ifPresent(c ->{
130+
query.condition().ifPresent(c -> {
131131
GraphTraversal<Vertex, Vertex> predicate = TraversalExecutor.getPredicate(c);
132132
traversal.filter(predicate);
133133
});
134134

135-
traversal.drop().iterate();
135+
traversal.drop().iterate();
136136
GraphTransactionUtil.transaction(graph);
137137
}
138138

139139
@Override
140140
public Stream<CommunicationEntity> select(SelectQuery query) {
141-
Objects.requireNonNull(query, "query is required");
142-
GraphTraversal<Vertex, Vertex> traversal = graph.traversal().V().hasLabel(query.name());
143-
query.condition().ifPresent(c ->{
144-
GraphTraversal<Vertex, Vertex> predicate = TraversalExecutor.getPredicate(c);
145-
traversal.filter(predicate);
146-
});
141+
GraphTraversal<Vertex, Vertex> traversal = buildGraphTraversalOf(query);
147142

148-
if(query.limit()> 0) {
143+
if (query.limit() > 0) {
149144
traversal.limit(query.limit());
150-
} else if(query.skip() > 0) {
145+
} else if (query.skip() > 0) {
151146
traversal.skip(query.skip());
152147
}
153-
query.sorts().forEach(
154-
s -> {
155-
if (s.isAscending()) {
156-
traversal.order().by(s.property(), asc);
157-
} else {
158-
traversal.order().by(s.property(), desc);
159-
}
160-
});
148+
query.sorts().forEach(
149+
s -> {
150+
if (s.isAscending()) {
151+
traversal.order().by(s.property(), asc);
152+
} else {
153+
traversal.order().by(s.property(), desc);
154+
}
155+
});
161156
return traversal.toStream().map(CommunicationEntityConverter.INSTANCE);
162157
}
163158

@@ -168,6 +163,22 @@ public long count(String entity) {
168163
return count.next();
169164
}
170165

166+
@Override
167+
public long count(SelectQuery query) {
168+
GraphTraversal<Vertex, Vertex> traversal = buildGraphTraversalOf(query);
169+
return traversal.count().next();
170+
}
171+
172+
private GraphTraversal<Vertex, Vertex> buildGraphTraversalOf(SelectQuery query) {
173+
Objects.requireNonNull(query, "query is required");
174+
GraphTraversal<Vertex, Vertex> traversal = graph.traversal().V().hasLabel(query.name());
175+
query.condition().ifPresent(c -> {
176+
GraphTraversal<Vertex, Vertex> predicate = TraversalExecutor.getPredicate(c);
177+
traversal.filter(predicate);
178+
});
179+
return traversal;
180+
}
181+
171182
@Override
172183
public void close() {
173184
try {

0 commit comments

Comments
 (0)