Skip to content

Commit fd59173

Browse files
committed
improves delete
1 parent 4152026 commit fd59173

File tree

3 files changed

+58
-10
lines changed

3 files changed

+58
-10
lines changed

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

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.datastax.oss.driver.api.core.type.codec.TypeCodec;
2525
import com.datastax.oss.driver.api.core.type.codec.registry.CodecRegistry;
2626
import com.datastax.oss.driver.api.querybuilder.QueryBuilder;
27+
import com.datastax.oss.driver.api.querybuilder.delete.Delete;
2728
import com.datastax.oss.driver.api.querybuilder.insert.Insert;
2829
import jakarta.nosql.column.ColumnDeleteQuery;
2930
import jakarta.nosql.column.ColumnEntity;
@@ -165,27 +166,34 @@ public void close() {
165166
}
166167

167168
@Override
168-
public void delete(ColumnDeleteQuery query, ConsistencyLevel level) throws NullPointerException {
169-
169+
public void delete(ColumnDeleteQuery query, ConsistencyLevel level) {
170+
requireNonNull(query, "query is required");
171+
requireNonNull(level, "level is required");
172+
final Delete delete = DeleteQueryConverter.delete(query, keyspace);
173+
final SimpleStatement build = delete.build();
174+
final SimpleStatement simpleStatement = build.setConsistencyLevel(level);
175+
session.execute(simpleStatement);
170176
}
171177

172178
@Override
173-
public void delete(ColumnDeleteQuery columnDeleteQuery) {
174-
179+
public void delete(ColumnDeleteQuery query) {
180+
requireNonNull(query, "query is required");
181+
final Delete delete = DeleteQueryConverter.delete(query, keyspace);
182+
session.execute(delete.build());
175183
}
176184

177185

178186
@Override
179187
public Stream<ColumnEntity> cql(String query) {
180-
Objects.requireNonNull(query, "query is required");
188+
requireNonNull(query, "query is required");
181189
final ResultSet resultSet = session.execute(query);
182190
return resultSet.all().stream().map(CassandraConverter::toDocumentEntity);
183191
}
184192

185193
@Override
186194
public Stream<ColumnEntity> cql(String query, Map<String, Object> values) {
187-
Objects.requireNonNull(query, "query is required");
188-
Objects.requireNonNull(values, "values is required");
195+
requireNonNull(query, "query is required");
196+
requireNonNull(values, "values is required");
189197
final PreparedStatement prepare = session.prepare(query);
190198
BoundStatement statement = prepare.bind();
191199
for (Map.Entry<String, Object> entry : values.entrySet()) {
@@ -198,14 +206,14 @@ public Stream<ColumnEntity> cql(String query, Map<String, Object> values) {
198206

199207
@Override
200208
public Stream<ColumnEntity> execute(SimpleStatement statement) {
201-
Objects.requireNonNull(statement, "statement is required");
209+
requireNonNull(statement, "statement is required");
202210
final ResultSet resultSet = session.execute(statement);
203211
return resultSet.all().stream().map(CassandraConverter::toDocumentEntity);
204212
}
205213

206214
@Override
207215
public CassandraPreparedStatement nativeQueryPrepare(String query) {
208-
Objects.requireNonNull(query, "query is required");
216+
requireNonNull(query, "query is required");
209217
final PreparedStatement prepare = session.prepare(query);
210218
return new CassandraPreparedStatement(prepare, session);
211219
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* Copyright (c) 2020 Otávio Santana and others
3+
* All rights reserved. This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v1.0
5+
* and Apache License v2.0 which accompanies this distribution.
6+
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
7+
* and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
8+
*
9+
* You may elect to redistribute this code under either of these licenses.
10+
*
11+
* Contributors:
12+
*
13+
* Otavio Santana
14+
*/
15+
16+
package org.eclipse.jnosql.diana.cassandra.column;
17+
18+
import com.datastax.oss.driver.api.querybuilder.QueryBuilder;
19+
import com.datastax.oss.driver.api.querybuilder.delete.Delete;
20+
import com.datastax.oss.driver.api.querybuilder.delete.DeleteSelection;
21+
import jakarta.nosql.column.ColumnDeleteQuery;
22+
23+
final class DeleteQueryConverter {
24+
private DeleteQueryConverter() {
25+
}
26+
27+
static Delete delete(ColumnDeleteQuery query, String keyspace) {
28+
final String columnFamily = query.getColumnFamily();
29+
DeleteSelection deleteSelection = QueryBuilder.deleteFrom(keyspace, columnFamily);
30+
31+
for (String column : query.getColumns()) {
32+
deleteSelection = deleteSelection.column(QueryUtils.getName(column));
33+
}
34+
35+
final Delete delete = deleteSelection.where(Relations.createClause(query.getCondition().orElse(null)));
36+
return delete;
37+
}
38+
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,10 @@ public static String count(String columnFamily, String keyspace) {
159159
}
160160

161161
static String getName(Column column) {
162+
return getName(column.getName());
163+
}
162164

163-
String name = column.getName();
165+
static String getName(String name) {
164166
if (name.charAt(0) == '_') {
165167
return "\"" + name + "\"";
166168
}

0 commit comments

Comments
 (0)