Skip to content

Commit 59168ee

Browse files
committed
fixes counter in cassandra
1 parent 81b1d95 commit 59168ee

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717

1818
import com.datastax.oss.driver.api.core.ConsistencyLevel;
1919
import com.datastax.oss.driver.api.core.CqlSession;
20+
import com.datastax.oss.driver.api.core.cql.ResultSet;
2021
import com.datastax.oss.driver.api.core.cql.SimpleStatement;
22+
import com.datastax.oss.driver.api.querybuilder.QueryBuilder;
2123
import com.datastax.oss.driver.api.querybuilder.insert.RegularInsert;
2224
import jakarta.nosql.column.ColumnDeleteQuery;
2325
import jakarta.nosql.column.ColumnEntity;
@@ -105,8 +107,10 @@ public Stream<ColumnEntity> select(ColumnQuery query) {
105107
}
106108

107109
@Override
108-
public long count(String s) {
109-
return 0;
110+
public long count(String columnFamily) {
111+
requireNonNull(columnFamily, "columnFamily is required");
112+
final ResultSet execute = session.execute(QueryBuilder.selectFrom(keyspace, columnFamily).countAll().build());
113+
return execute.one().getLong(0);
110114
}
111115

112116

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.eclipse.jnosql.diana.cassandra.column;
1717

1818

19+
import com.datastax.oss.driver.api.core.CqlIdentifier;
1920
import com.datastax.oss.driver.api.core.CqlSession;
2021
import com.datastax.oss.driver.api.core.data.UdtValue;
2122
import com.datastax.oss.driver.api.core.metadata.schema.ClusteringOrder;
@@ -62,7 +63,7 @@ public static RegularInsert insert(ColumnEntity entity, String keyspace, CqlSess
6263
entity.getColumns().stream()
6364
.forEach(c -> {
6465
if (UDT.class.isInstance(c)) {
65-
insertUDT(UDT.class.cast(c), keyspace, session, insert);
66+
insertUDT(UDT.class.cast(c), keyspace, session, values);
6667
} else {
6768
insertSingleField(c, values);
6869
}
@@ -103,7 +104,7 @@ private static Function<Sort, ClusteringOrder> mapSort() {
103104
ClusteringOrder.DESC;
104105
}
105106

106-
private static void insertUDT(UDT udt, String keyspace, CqlSession session, InsertInto insert) {
107+
private static void insertUDT(UDT udt, String keyspace, CqlSession session, Map<String, Term> values) {
107108

108109
UserDefinedType userType =
109110
session.getMetadata()
@@ -113,20 +114,22 @@ private static void insertUDT(UDT udt, String keyspace, CqlSession session, Inse
113114

114115
Iterable elements = Iterable.class.cast(udt.get());
115116
Object udtValue = getUdtValue(userType, elements);
116-
insert.value(getName(udt), QueryBuilder.literal(udtValue));
117+
values.put(getName(udt), QueryBuilder.literal(udtValue));
117118
}
118119

119120
private static Object getUdtValue(UserDefinedType userType, Iterable elements) {
120121

121122
List<Object> udtValues = new ArrayList<>();
122123
UdtValue udtValue = userType.newValue();
124+
final List<String> udtNames = userType.getFieldNames().stream().map(CqlIdentifier::asInternal)
125+
.collect(Collectors.toList());
123126
for (Object object : elements) {
124127
if (Column.class.isInstance(object)) {
125128
Column column = Column.class.cast(object);
126129
Object convert = ValueUtil.convert(column.getValue());
127130

128-
//DataType fieldType = userType.getFieldType(column.getName());
129-
DataType fieldType = null;
131+
final int index = udtNames.indexOf(column.getName());
132+
DataType fieldType = userType.getFieldTypes().get(index);
130133
TypeCodec<Object> objectTypeCodec = CodecRegistry.DEFAULT.codecFor(fieldType);
131134
udtValue.set(getName(column), convert, objectTypeCodec);
132135

0 commit comments

Comments
 (0)