Skip to content

Commit d4a055b

Browse files
committed
feat: add default execute and count methods
Implemented default methods for execute and count in QueryExecutor interface to streamline query execution and counting operations without requiring consistency level. Signed-off-by: Maximillian Arruda <[email protected]>
1 parent e759550 commit d4a055b

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

jnosql-cassandra/src/main/java/org/eclipse/jnosql/databases/cassandra/communication/QueryExecutor.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,17 @@ static QueryExecutor of(SelectQuery query) {
2929
return QueryExecutorType.DEFAULT;
3030
}
3131

32-
Stream<CommunicationEntity> execute(String keyspace, SelectQuery query, DefaultCassandraColumnManager manager);
32+
default Stream<CommunicationEntity> execute(String keyspace, SelectQuery query, DefaultCassandraColumnManager manager) {
33+
return execute(keyspace, query, null, manager);
34+
}
3335

3436
Stream<CommunicationEntity> execute(String keyspace, SelectQuery query, ConsistencyLevel level,
35-
DefaultCassandraColumnManager manager);
37+
DefaultCassandraColumnManager manager);
38+
39+
default long count(String keyspace, SelectQuery query, DefaultCassandraColumnManager manager) {
40+
return count(keyspace, query, null, manager);
41+
}
42+
43+
long count(String keyspace, SelectQuery query, ConsistencyLevel level, DefaultCassandraColumnManager manager);
3644

3745
}

jnosql-cassandra/src/main/java/org/eclipse/jnosql/databases/cassandra/communication/QueryExecutorType.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,9 @@
3030

3131
enum QueryExecutorType implements QueryExecutor {
3232
PAGING_STATE {
33-
@Override
34-
public Stream<CommunicationEntity> execute(String keyspace, SelectQuery query, DefaultCassandraColumnManager manager) {
35-
return execute(keyspace, query, null, manager);
36-
}
37-
3833
@Override
3934
public Stream<CommunicationEntity> execute(String keyspace, SelectQuery q, ConsistencyLevel level,
40-
DefaultCassandraColumnManager manager) {
35+
DefaultCassandraColumnManager manager) {
4136

4237
CassandraQuery query = CassandraQuery.class.cast(q);
4338

@@ -73,14 +68,9 @@ public Stream<CommunicationEntity> execute(String keyspace, SelectQuery q, Consi
7368

7469
},
7570
DEFAULT {
76-
@Override
77-
public Stream<CommunicationEntity> execute(String keyspace, SelectQuery query, DefaultCassandraColumnManager manager) {
78-
return execute(keyspace, query, null, manager);
79-
}
80-
8171
@Override
8272
public Stream<CommunicationEntity> execute(String keyspace, SelectQuery query, ConsistencyLevel level,
83-
DefaultCassandraColumnManager manager) {
73+
DefaultCassandraColumnManager manager) {
8474

8575
Select cassandraSelect = QueryUtils.select(query, keyspace);
8676

@@ -98,5 +88,17 @@ public Stream<CommunicationEntity> execute(String keyspace, SelectQuery query, C
9888
}
9989
return resultSet.all().stream().map(CassandraConverter::toDocumentEntity);
10090
}
91+
};
92+
93+
@Override
94+
public long count(String keyspace, SelectQuery query, ConsistencyLevel level, DefaultCassandraColumnManager manager) {
95+
96+
Select cassandraSelect = QueryUtils.select(query, keyspace).countAll();
97+
SimpleStatement select = cassandraSelect.build();
98+
if (Objects.nonNull(level)) {
99+
select = select.setConsistencyLevel(level);
100+
}
101+
ResultSet resultSet = manager.getSession().execute(select);
102+
return resultSet.one().getLong(0);
101103
}
102104
}

0 commit comments

Comments
 (0)