@Override public <T> Flux<T> query(Statement statement, ReactiveResultSetExtractor<T> rse) throws DataAccessException { Assert.notNull(statement, "CQL Statement must not be null"); Assert.notNull(rse, "ReactiveResultSetExtractor must not be null"); return createFlux(statement, (session, stmt) -> { if (logger.isDebugEnabled()) { logger.debug("Executing CQL Statement [{}]", statement); } return session.execute(stmt).flatMapMany(rse::extractData); }).onErrorMap(translateException("Query", statement.toString())); }
@Override public <T> Flux<T> execute(ReactiveSessionCallback<T> action) throws DataAccessException { Assert.notNull(action, "Callback object must not be null"); return createFlux(action).onErrorMap(translateException("ReactiveSessionCallback", getCql(action))); }
@Override public <T> Flux<T> query(String cql, ReactiveResultSetExtractor<T> resultSetExtractor) throws DataAccessException { Assert.hasText(cql, "CQL must not be empty"); Assert.notNull(resultSetExtractor, "ReactiveResultSetExtractor must not be null"); return createFlux(new SimpleStatement(cql), (session, stmt) -> { if (logger.isDebugEnabled()) { logger.debug("Executing CQL Statement [{}]", cql); } return session.execute(stmt).flatMapMany(resultSetExtractor::extractData); }).onErrorMap(translateException("Query", cql)); }
@Override public <T> Flux<T> execute(ReactivePreparedStatementCreator psc, ReactivePreparedStatementCallback<T> action) throws DataAccessException { Assert.notNull(psc, "ReactivePreparedStatementCreator must not be null"); Assert.notNull(action, "ReactivePreparedStatementCallback object must not be null"); return createFlux(session -> { logger.debug("Preparing statement [{}] using {}", getCql(psc), psc); return psc.createPreparedStatement(session).doOnNext(this::applyStatementSettings) .flatMapMany(ps -> action.doInPreparedStatement(session, ps)); }).onErrorMap(translateException("ReactivePreparedStatementCallback", getCql(psc))); }