Skip to content

Commit e88d73a

Browse files
committed
implements count
1 parent 3b205f2 commit e88d73a

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

cassandra-driver/src/main/java/org/jnosql/diana/cassandra/column/DefaultCassandraColumnFamilyManager.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.datastax.driver.core.querybuilder.BuiltStatement;
2323
import com.datastax.driver.core.querybuilder.Insert;
2424
import com.datastax.driver.core.querybuilder.QueryBuilder;
25+
import com.datastax.driver.core.querybuilder.Select;
2526
import org.jnosql.diana.api.column.ColumnDeleteQuery;
2627
import org.jnosql.diana.api.column.ColumnEntity;
2728
import org.jnosql.diana.api.column.ColumnQuery;
@@ -92,6 +93,15 @@ public List<ColumnEntity> select(ColumnQuery query) {
9293
.collect(Collectors.toList());
9394
}
9495

96+
@Override
97+
public long count(String columnFamily) {
98+
requireNonNull(columnFamily, "columnFamily is required");
99+
String cql = QueryUtils.count(columnFamily, keyspace);
100+
ResultSet resultSet = session.execute(cql);
101+
Object object = resultSet.one().getObject(0);
102+
return Number.class.cast(object).longValue();
103+
}
104+
95105
@Override
96106
public ColumnEntity save(ColumnEntity entity, ConsistencyLevel level) throws NullPointerException {
97107
requireNonNull(entity, "entity is required");

cassandra-driver/src/main/java/org/jnosql/diana/cassandra/column/DefaultCassandraColumnFamilyManagerAsync.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,12 @@ public void select(ColumnQuery query, Consumer<List<ColumnEntity>> consumer)
219219
resultSet.addListener(executeAsync, executor);
220220
}
221221

222+
@Override
223+
public void count(String columnFamily, Consumer<Long> callback) {
224+
requireNonNull(columnFamily, "columnFamily is required");
225+
requireNonNull(callback, "callback is required");
226+
}
227+
222228
@Override
223229
public void select(ColumnQuery query, ConsistencyLevel level, Consumer<List<ColumnEntity>> consumer)
224230
throws ExecuteAsyncQueryException, NullPointerException {

cassandra-driver/src/main/java/org/jnosql/diana/cassandra/column/QueryUtils.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@ public static BuiltStatement delete(ColumnDeleteQuery query, String keySpace) {
155155
return where;
156156
}
157157

158+
public static String count(String columnFamily, String keyspace) {
159+
return String.format("select count(*) from %s.%s", keyspace, columnFamily);
160+
}
161+
158162
private static void createClause(Optional<ColumnCondition> columnConditionOptional, List<Clause> clauses) {
159163
if (!columnConditionOptional.isPresent()) {
160164
return;
@@ -216,4 +220,5 @@ private static Object[] getIinValue(Object value) {
216220
}
217221

218222

223+
219224
}

cassandra-driver/src/test/java/org/jnosql/diana/cassandra/column/CassandraColumnFamilyManagerTest.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,30 +204,30 @@ public void shouldUpdateColumns() {
204204

205205
@Test
206206
public void shouldReturnErrorWhenSaveHasNullElement() {
207-
assertThrows(NullPointerException.class, () ->{
208-
entityManager.save((ColumnEntity) null, Duration.ofSeconds(1L), ConsistencyLevel.ALL);
207+
assertThrows(NullPointerException.class, () -> {
208+
entityManager.save((ColumnEntity) null, Duration.ofSeconds(1L), ConsistencyLevel.ALL);
209209
});
210210

211-
assertThrows(NullPointerException.class, () ->{
211+
assertThrows(NullPointerException.class, () -> {
212212
entityManager.save(getColumnFamily(), null, ConsistencyLevel.ALL);
213213
});
214214

215-
assertThrows(NullPointerException.class, () ->{
215+
assertThrows(NullPointerException.class, () -> {
216216
entityManager.save(getColumnFamily(), Duration.ofSeconds(1L), null);
217217
});
218218
}
219219

220220
@Test
221221
public void shouldReturnErrorWhenSaveIterableHasNullElement() {
222-
assertThrows(NullPointerException.class, () ->{
222+
assertThrows(NullPointerException.class, () -> {
223223
entityManager.save((List<ColumnEntity>) null, Duration.ofSeconds(1L), ConsistencyLevel.ALL);
224224
});
225225

226-
assertThrows(NullPointerException.class, () ->{
226+
assertThrows(NullPointerException.class, () -> {
227227
entityManager.save(getEntities(), null, ConsistencyLevel.ALL);
228228
});
229229

230-
assertThrows(NullPointerException.class, () ->{
230+
assertThrows(NullPointerException.class, () -> {
231231
entityManager.save(getEntities(), Duration.ofSeconds(1L), null);
232232
});
233233
}
@@ -468,7 +468,6 @@ public void shouldSupportListUDTs() {
468468
entityManager.insert(entity);
469469
}
470470

471-
472471
@Test
473472
public void shouldReturnListUDT() {
474473
ColumnEntity entity = createEntityWithIterable();
@@ -481,6 +480,14 @@ public void shouldReturnListUDT() {
481480
assertTrue(names.stream().allMatch(n -> n.size() == 2));
482481
}
483482

483+
@Test
484+
public void shouldCount() {
485+
ColumnEntity entity = createEntityWithIterable();
486+
entityManager.insert(entity);
487+
long contacts = entityManager.count("contacts");
488+
assertTrue(contacts > 0);
489+
}
490+
484491
private ColumnEntity createEntityWithIterable() {
485492
ColumnEntity entity = ColumnEntity.of("contacts");
486493
entity.add(Column.of("user", "otaviojava"));

0 commit comments

Comments
 (0)