@Test public void shouldExecuteN1ql() { getBucket().query(N1qlQuery.simple("INSERT INTO " + TEST_BUCKET + " (KEY, VALUE) VALUES ('" + ID + "', " + DOCUMENT + ")")); N1qlQueryResult query = getBucket().query(N1qlQuery.simple("SELECT * FROM " + TEST_BUCKET + " USE KEYS '" + ID + "'")); Assert.assertTrue(query.parseSuccess()); Assert.assertTrue(query.finalSuccess()); List<N1qlQueryRow> n1qlQueryRows = query.allRows(); Assert.assertEquals(1, n1qlQueryRows.size()); Assert.assertEquals(DOCUMENT, n1qlQueryRows.get(0).value().get(TEST_BUCKET).toString()); }
/** * Execute native query. * * @param n1qlQuery * the n1ql query * @param em * the entity manager * @return the list */ public List executeNativeQuery(String n1qlQuery, EntityMetadata em) { N1qlQueryResult result = bucket .query(N1qlQuery.simple(n1qlQuery, N1qlParams.build().consistency(ScanConsistency.REQUEST_PLUS))); LOGGER.debug("Executed query : " + n1qlQuery + " on the " + bucket.name() + " Bucket"); validateQueryResults(n1qlQuery, result); return result.allRows(); }
static List<DocumentEntity> convert(N1qlQueryResult result, String database) { return result.allRows().stream() .map(N1qlQueryRow::value) .map(JsonObject::toMap) .map(m -> m.get(database)) .filter(Objects::nonNull) .filter(Map.class::isInstance) .map(m -> (Map<String, Object>) m) .map(map -> { List<Document> documents = toDocuments(map); Optional<Document> keyDocument = documents.stream().filter(d -> KEY_FIELD.equals(d.getName())).findFirst(); String collection = keyDocument.map(d -> d.get(String.class)).orElse(database).split(SPLIT_KEY)[0]; return DocumentEntity.of(collection, documents); }).collect(toList()); }
/** {@inheritDoc} */ @Override public Map<String, Property<?>> readAllProperties() { N1qlQuery queryFeatures = N1qlQuery.simple("SELECT * FROM " + couchBaseConnection.getFf4jPropertyBucketName()); N1qlQueryResult queryResult = getPropertyBucket().query(queryFeatures); Map<String, Property<?>> allProperties = new HashMap<>(); for (N1qlQueryRow row : queryResult.allRows()) { Property<?> p = PropertyJsonParser.parseProperty(row.value().get(couchBaseConnection.getFf4jPropertyBucketName()).toString()); allProperties.put(p.getName(), p); } return allProperties; }
/** {@inheritDoc} */ @Override public Map<String, Feature> readAll() { // To retrieve the items we use the BUCKET (not view as KEY/VALUE searches) N1qlQuery queryFeatures = N1qlQuery.simple("SELECT * FROM " + couchBaseConnection.getFf4jFeatureBucketName()); N1qlQueryResult queryResult = getFeatureBucket().query(queryFeatures); Map<String, Feature> allFeatures = new HashMap<>(); for (N1qlQueryRow row : queryResult.allRows()) { Feature f = FeatureJsonParser.parseFeature(row.value().get(couchBaseConnection.getFf4jFeatureBucketName()).toString()); allFeatures.put(f.getUid(), f); } return allFeatures; }
@Override public <T> List<T> findByN1QLProjection(N1qlQuery n1ql, Class<T> entityClass) { checkN1ql(); try { N1qlQueryResult queryResult = queryN1QL(n1ql); if (queryResult.finalSuccess()) { List<N1qlQueryRow> allRows = queryResult.allRows(); List<T> result = new ArrayList<T>(allRows.size()); for (N1qlQueryRow row : allRows) { JsonObject json = row.value(); T decoded = translationService.decodeFragment(json.toString(), entityClass); result.add(decoded); } return result; } else { StringBuilder message = new StringBuilder("Unable to execute query due to the following n1ql errors: "); for (JsonObject error : queryResult.errors()) { message.append('\n').append(error); } throw new CouchbaseQueryExecutionException(message.toString()); } } catch (TranscodingException e) { throw new CouchbaseQueryExecutionException("Unable to execute query", e); } }
@Override public <T> List<T> findByN1QLProjection(N1qlQuery n1ql, Class<T> entityClass) { checkN1ql(); try { N1qlQueryResult queryResult = queryN1QL(n1ql); if (queryResult.finalSuccess()) { List<N1qlQueryRow> allRows = queryResult.allRows(); List<T> result = new ArrayList<T>(allRows.size()); for (N1qlQueryRow row : allRows) { JsonObject json = row.value(); T decoded = translationService.decodeFragment(json.toString(), entityClass); result.add(decoded); } return result; } else { StringBuilder message = new StringBuilder("Unable to execute query due to the following n1ql errors: "); for (JsonObject error : queryResult.errors()) { message.append('\n').append(error); } throw new CouchbaseQueryExecutionException(message.toString()); } } catch (TranscodingException e) { throw new CouchbaseQueryExecutionException("Unable to execute query", e); } }
List<N1qlQueryRow> allRows = queryResult.allRows(); List<T> result = new ArrayList<T>(allRows.size()); for (N1qlQueryRow row : allRows) {
List<N1qlQueryRow> allRows = queryResult.allRows(); List<T> result = new ArrayList<T>(allRows.size()); for (N1qlQueryRow row : allRows) {