Skip to content

Commit e8a23a0

Browse files
committed
feat: add count method based on query to CassandraColumnManager
Implemented a count method in CassandraColumnManager to allow counting records based on a query and consistency level. Added corresponding test to verify functionality. Signed-off-by: Maximillian Arruda <[email protected]>
1 parent d4a055b commit e8a23a0

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,17 @@ public interface CassandraColumnManager extends DatabaseManager {
101101
*/
102102
Stream<CommunicationEntity> select(SelectQuery query, ConsistencyLevel level) throws NullPointerException;
103103

104+
/**
105+
* Count based on a query using a consistency level
106+
*
107+
* @param query the query
108+
* @param level the consistency level
109+
* @return the query using a consistency level
110+
* @throws NullPointerException when either query or level are null
111+
*/
112+
long count(SelectQuery query, ConsistencyLevel level) throws NullPointerException;
113+
114+
104115
/**
105116
* Executes CQL
106117
*

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,17 @@ public long count(String columnFamily) {
159159
return execute.one().getLong(0);
160160
}
161161

162+
@Override
163+
public long count(SelectQuery query) {
164+
return count(query, null);
165+
}
166+
167+
@Override
168+
public long count(SelectQuery query, ConsistencyLevel level) {
169+
requireNonNull(query, "query is required");
170+
QueryExecutor executor = QueryExecutor.of(query);
171+
return executor.count(keyspace, query, level, this);
172+
}
162173

163174
@Override
164175
public void close() {

jnosql-cassandra/src/test/java/org/eclipse/jnosql/databases/cassandra/communication/CassandraColumnManagerTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,14 @@ void shouldCount() {
451451
assertTrue(contacts > 0);
452452
}
453453

454+
@Test
455+
void shouldCountBySelectQuery() {
456+
entityManager.insert(getColumnFamily());
457+
var query = select().from(Constants.COLUMN_FAMILY).where("id").eq(10L).build();
458+
assertThat(entityManager.count(query))
459+
.isEqualTo(1);
460+
}
461+
454462
@Test
455463
void shouldPagingState() {
456464
for (long index = 1; index <= 10; index++) {

0 commit comments

Comments
 (0)