@Override protected Mono<Health> doHealthCheck(Health.Builder builder) { Select select = QueryBuilder.select("release_version").from("system", "local"); return this.reactiveCassandraOperations.getReactiveCqlOperations() .queryForObject(select, String.class) .map((version) -> builder.up().withDetail("version", version).build()) .single(); }
private Mono<WriteResult> handleStatement(Message<?> requestMessage) { Object payload = requestMessage.getPayload(); Mono<ReactiveResultSet> resultSetMono; if (payload instanceof Statement) { resultSetMono = this.cassandraOperations.getReactiveCqlOperations().queryForResultSet((Statement) payload); } else { resultSetMono = this.cassandraOperations.getReactiveCqlOperations() .execute((ReactiveSessionCallback<ReactiveResultSet>) session -> this.sessionMessageCallback.doInSession(session, requestMessage)) .next(); } return resultSetMono.transform(this::transformToWriteResult); }
private Mono<WriteResult> handleStatement(Message<?> requestMessage) { Object payload = requestMessage.getPayload(); Mono<ReactiveResultSet> resultSetMono; if (payload instanceof Statement) { resultSetMono = this.cassandraOperations.getReactiveCqlOperations().queryForResultSet((Statement) payload); } else { resultSetMono = this.cassandraOperations.getReactiveCqlOperations() .execute((ReactiveSessionCallback<ReactiveResultSet>) session -> this.sessionMessageCallback.doInSession(session, requestMessage)) .next(); } return resultSetMono.transform(this::transformToWriteResult); }
@Override public Object execute(Statement statement, Class<?> type) { Mono<List<Row>> rows = this.operations.getReactiveCqlOperations().queryForRows(statement).buffer(2).next(); return rows.map(it -> { if (it.isEmpty()) { return false; } if (it.size() == 1) { Row row = it.get(0); if (ProjectionUtil.qualifiesAsCountProjection(row)) { Object object = row.getObject(0); return ((Number) object).longValue() > 0; } } return true; }).switchIfEmpty(Mono.just(false)); } }
@Override public Mono<WriteResult> execute() { return Mono.defer(() -> { if (executed.compareAndSet(false, true)) { return Flux.merge(batchMonos) // .flatMapIterable(Function.identity()) // .collectList() // .flatMap(statements -> { statements.forEach(batch::add); return operations.getReactiveCqlOperations().queryForResultSet(batch); }).flatMap(resultSet -> resultSet.rows().collectList() .map(rows -> new WriteResult(resultSet.getAllExecutionInfo(), resultSet.wasApplied(), rows))); } return Mono.error(new IllegalStateException("This Cassandra Batch was already executed")); }); }
return this.cassandraOperations.getReactiveCqlOperations() .execute((ReactiveSessionCallback<WriteResult>) session -> session.prepare(this.ingestQuery)
return this.cassandraOperations.getReactiveCqlOperations() .execute((ReactiveSessionCallback<WriteResult>) session -> session.prepare(this.ingestQuery)