@SuppressWarnings("unchecked") @Override public Mono<Long> count() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(true); query.stale(operations.getDefaultConsistency().viewConsistency()); return mapMono(operations .queryView(query) .flatMap(AsyncViewResult::rows) .map(asyncViewRow -> Long.valueOf(asyncViewRow.value().toString())).toSingle()); }
@SuppressWarnings("unchecked") @Override public Mono<Long> count() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(true); query.stale(operations.getDefaultConsistency().viewConsistency()); return mapMono(operations .queryView(query) .flatMap(AsyncViewResult::rows) .map(asyncViewRow -> Long.valueOf(asyncViewRow.value().toString())).toSingle()); }
protected Object guessViewAndExecute() { String designDoc = designDocName(method); String methodName = method.getName(); boolean isExplicitReduce = method.hasViewAnnotation() && method.getViewAnnotation().reduce(); boolean isReduce = methodName.startsWith("count") || isExplicitReduce; String viewName = StringUtils.uncapitalize(methodName.replaceFirst("find|count", "")); ViewQuery simpleQuery = ViewQuery.from(designDoc, viewName) .stale(operations.getDefaultConsistency().viewConsistency()); if (isReduce) { simpleQuery.reduce(); return executeReduce(simpleQuery, designDoc, viewName); } else { return execute(simpleQuery); } }
protected Object guessViewAndExecute() { String designDoc = designDocName(method); String methodName = method.getName(); boolean isExplicitReduce = method.hasViewAnnotation() && method.getViewAnnotation().reduce(); boolean isReduce = methodName.startsWith("count") || isExplicitReduce; String viewName = StringUtils.uncapitalize(methodName.replaceFirst("find|count", "")); ViewQuery simpleQuery = ViewQuery.from(designDoc, viewName) .stale(operations.getDefaultConsistency().viewConsistency()); if (isReduce) { simpleQuery.reduce(); return executeReduce(simpleQuery, designDoc, viewName); } else { return execute(simpleQuery); } }
@SuppressWarnings("unchecked") @Override public Mono<Void> deleteAll() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(operations.getDefaultConsistency().viewConsistency()); return mapMono(operations.queryView(query) .map(AsyncViewResult::rows) .flatMap(row -> { AsyncViewRow asyncViewRow = (AsyncViewRow) row; return operations.remove(asyncViewRow.id()) .onErrorResumeNext(throwable -> { if (throwable instanceof DocumentDoesNotExistException) { return Observable.empty(); } return Observable.error(throwable); }); }) .toList() .map(list -> Observable.<Void>empty()) .toSingle()); }
@SuppressWarnings("unchecked") @Override public Mono<Void> deleteAll() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(operations.getDefaultConsistency().viewConsistency()); return mapMono(operations.queryView(query) .map(AsyncViewResult::rows) .flatMap(row -> { AsyncViewRow asyncViewRow = (AsyncViewRow) row; return operations.remove(asyncViewRow.id()) .onErrorResumeNext(throwable -> { if (throwable instanceof DocumentDoesNotExistException) { return Observable.empty(); } return Observable.error(throwable); }); }) .toList() .map(list -> Observable.<Void>empty()) .toSingle()); }
@SuppressWarnings("unchecked") @Override public Flux<T> findAll() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(operations.getDefaultConsistency().viewConsistency()); return mapFlux(operations.findByView(query, entityInformation.getJavaType())); }
@SuppressWarnings("unchecked") @Override public Flux<T> findAll() { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(operations.getDefaultConsistency().viewConsistency()); return mapFlux(operations.findByView(query, entityInformation.getJavaType())); }
@SuppressWarnings("unchecked") @Override public Flux<T> findAllById(final Iterable<ID> ids) { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(operations.getDefaultConsistency().viewConsistency()); JsonArray keys = JsonArray.create(); for (ID id : ids) { keys.add(id); } query.keys(keys); return mapFlux(operations.findByView(query, entityInformation.getJavaType())); }
@SuppressWarnings("unchecked") @Override public Flux<T> findAllById(final Iterable<ID> ids) { final ResolvedView resolvedView = determineView(); ViewQuery query = ViewQuery.from(resolvedView.getDesignDocument(), resolvedView.getViewName()); query.reduce(false); query.stale(operations.getDefaultConsistency().viewConsistency()); JsonArray keys = JsonArray.create(); for (ID id : ids) { keys.add(id); } query.keys(keys); return mapFlux(operations.findByView(query, entityInformation.getJavaType())); }
@Override public Object execute(Object[] parameters) { ReactiveCouchbaseParameterAccessor accessor = new ReactiveCouchbaseParameterAccessor(queryMethod, parameters); ResultProcessor processor = this.queryMethod.getResultProcessor().withDynamicProjection(accessor); ReturnedType returnedType = processor.getReturnedType(); Class<?> typeToRead = returnedType.getTypeToRead(); typeToRead = typeToRead == null ? returnedType.getDomainType() : typeToRead; Statement statement = getStatement(accessor, parameters, returnedType); JsonValue queryPlaceholderValues = getPlaceholderValues(accessor); //prepare the final query N1qlQuery query = N1qlUtils.buildQuery(statement, queryPlaceholderValues, getCouchbaseOperations().getDefaultConsistency().n1qlConsistency()); return ReactiveWrapperConverters.toWrapper( processor.processResult(executeDependingOnType(query, queryMethod, typeToRead)), Flux.class); }
@Override public Object execute(Object[] parameters) { ReactiveCouchbaseParameterAccessor accessor = new ReactiveCouchbaseParameterAccessor(queryMethod, parameters); ResultProcessor processor = this.queryMethod.getResultProcessor().withDynamicProjection(accessor); ReturnedType returnedType = processor.getReturnedType(); Class<?> typeToRead = returnedType.getTypeToRead(); typeToRead = typeToRead == null ? returnedType.getDomainType() : typeToRead; Statement statement = getStatement(accessor, parameters, returnedType); JsonValue queryPlaceholderValues = getPlaceholderValues(accessor); //prepare the final query N1qlQuery query = N1qlUtils.buildQuery(statement, queryPlaceholderValues, getCouchbaseOperations().getDefaultConsistency().n1qlConsistency()); return ReactiveWrapperConverters.toWrapper( processor.processResult(executeDependingOnType(query, queryMethod, typeToRead)), Flux.class); }
@SuppressWarnings("unchecked") @Override public Flux<T> findAll(Sort sort) { Assert.notNull(sort); //prepare elements of the query WherePath selectFrom = N1qlUtils.createSelectFromForEntity(getCouchbaseOperations().getCouchbaseBucket().name()); Expression whereCriteria = N1qlUtils.createWhereFilterForEntity(null, getCouchbaseOperations().getConverter(), getEntityInformation()); //apply the sort com.couchbase.client.java.query.dsl.Sort[] orderings = N1qlUtils.createSort(sort, getCouchbaseOperations().getConverter()); Statement st = selectFrom.where(whereCriteria).orderBy(orderings); //fire the query ScanConsistency consistency = getCouchbaseOperations().getDefaultConsistency().n1qlConsistency(); N1qlQuery query = N1qlQuery.simple(st, N1qlParams.build().consistency(consistency)); return mapFlux(getCouchbaseOperations().findByN1QL(query, getEntityInformation().getJavaType())); }
@SuppressWarnings("unchecked") @Override public Flux<T> findAll(Sort sort) { Assert.notNull(sort); //prepare elements of the query WherePath selectFrom = N1qlUtils.createSelectFromForEntity(getCouchbaseOperations().getCouchbaseBucket().name()); Expression whereCriteria = N1qlUtils.createWhereFilterForEntity(null, getCouchbaseOperations().getConverter(), getEntityInformation()); //apply the sort com.couchbase.client.java.query.dsl.Sort[] orderings = N1qlUtils.createSort(sort, getCouchbaseOperations().getConverter()); Statement st = selectFrom.where(whereCriteria).orderBy(orderings); //fire the query ScanConsistency consistency = getCouchbaseOperations().getDefaultConsistency().n1qlConsistency(); N1qlQuery query = N1qlQuery.simple(st, N1qlParams.build().consistency(consistency)); return mapFlux(getCouchbaseOperations().findByN1QL(query, getEntityInformation().getJavaType())); }
.stale(operations.getDefaultConsistency().viewConsistency());
@Override public Object execute(Object[] runtimeParams) { String designDoc = method.getDimensionalAnnotation().designDocument(); String viewName = method.getDimensionalAnnotation().spatialViewName(); int dimensions = method.getDimensionalAnnotation().dimensions(); PartTree tree = new PartTree(method.getName(), method.getEntityInformation().getJavaType()); //prepare a spatial view query to be used as a base for the query creator SpatialViewQuery baseSpatialQuery = SpatialViewQuery.from(designDoc, viewName) .stale(operations.getDefaultConsistency().viewConsistency()); //use the SpatialViewQueryCreator to complete it SpatialViewQueryCreator creator = new SpatialViewQueryCreator(dimensions, tree, new ReactiveCouchbaseParameterAccessor(method, runtimeParams), baseSpatialQuery, operations.getConverter()); SpatialViewQueryCreator.SpatialViewQueryWrapper finalQuery = creator.createQuery(); //execute the spatial query return execute(finalQuery); }
@Override public Object execute(Object[] runtimeParams) { String designDoc = method.getDimensionalAnnotation().designDocument(); String viewName = method.getDimensionalAnnotation().spatialViewName(); int dimensions = method.getDimensionalAnnotation().dimensions(); PartTree tree = new PartTree(method.getName(), method.getEntityInformation().getJavaType()); //prepare a spatial view query to be used as a base for the query creator SpatialViewQuery baseSpatialQuery = SpatialViewQuery.from(designDoc, viewName) .stale(operations.getDefaultConsistency().viewConsistency()); //use the SpatialViewQueryCreator to complete it SpatialViewQueryCreator creator = new SpatialViewQueryCreator(dimensions, tree, new ReactiveCouchbaseParameterAccessor(method, runtimeParams), baseSpatialQuery, operations.getConverter()); SpatialViewQueryCreator.SpatialViewQueryWrapper finalQuery = creator.createQuery(); //execute the spatial query return execute(finalQuery); }
.stale(operations.getDefaultConsistency().viewConsistency());