@Override public <T> Flux<T> query(String cql, @Nullable PreparedStatementBinder psb, ReactiveResultSetExtractor<T> rse) throws DataAccessException { return query(newReactivePreparedStatementCreator(cql), psb, rse); }
@Override public <T> Flux<T> execute(String cql, ReactivePreparedStatementCallback<T> action) throws DataAccessException { return execute(newReactivePreparedStatementCreator(cql), action); }
@Override public Mono<Boolean> execute(String cql, @Nullable PreparedStatementBinder psb) throws DataAccessException { return query(newReactivePreparedStatementCreator(cql), psb, resultSet -> Mono.just(resultSet.wasApplied())) .next(); }
@Override public Mono<ReactiveResultSet> queryForResultSet(String cql, Object... args) throws DataAccessException { Assert.hasText(cql, "CQL must not be empty"); return query(newReactivePreparedStatementCreator(cql), newArgPreparedStatementBinder(args), Mono::just) .next(); }
@Override public <T> Flux<T> query(String cql, ReactiveResultSetExtractor<T> rse, Object... args) throws DataAccessException { return query(newReactivePreparedStatementCreator(cql), newArgPreparedStatementBinder(args), rse); }
@Override public Flux<Boolean> execute(String cql, Publisher<Object[]> args) throws DataAccessException { Assert.notNull(args, "Args Publisher must not be null"); return execute(newReactivePreparedStatementCreator(cql), (session, ps) -> Flux.from(args).flatMap(objects -> { if (logger.isDebugEnabled()) { logger.debug("Executing Prepared CQL Statement [{}]", cql); } BoundStatement boundStatement = newArgPreparedStatementBinder(objects).bindValues(ps); applyStatementSettings(boundStatement); return session.execute(boundStatement); }).map(ReactiveResultSet::wasApplied)); }