@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<Boolean> exists(Object id, Class<?> entityClass) { Assert.notNull(id, "Id must not be null"); Assert.notNull(entityClass, "Entity type must not be null"); CassandraPersistentEntity<?> entity = getRequiredPersistentEntity(entityClass); Select select = QueryBuilder.select().from(entity.getTableName().toCql()); getConverter().write(id, select.where(), entity); return getReactiveCqlOperations().queryForRows(select).hasElements(); }
Mono<Boolean> doExists(Query query, Class<?> entityClass, CqlIdentifier tableName) { RegularStatement select = getStatementFactory().select(query.limit(1), getRequiredPersistentEntity(entityClass), tableName); return getReactiveCqlOperations().queryForRows(select).hasElements(); }