@Override public void count(String documentCollection, Consumer<Long> callback) { Objects.requireNonNull(documentCollection, "document collection is required"); Objects.requireNonNull(callback, "callback is required"); String aql = "RETURN LENGTH(" + documentCollection + ")"; CompletableFuture<ArangoCursorAsync<Object>> query = arangoDBAsync.db(database).query(aql, Collections.emptyMap(), null, Object.class); query.thenAccept(r -> { long count = StreamSupport.stream(r.spliterator(), false).findFirst().map(Long.class::cast).orElse(0L); callback.accept(count); }); }
@Override public void close() { arangoDB.shutdown(); arangoDBAsync.shutdown(); } }
private void runAql(String query, Map<String, Object> values, Consumer<List<DocumentEntity>> callBack) { CompletableFuture<ArangoCursorAsync<BaseDocument>> future = arangoDBAsync.db(database).query(query, values, null, BaseDocument.class); future.thenAccept(b -> { List<DocumentEntity> entities = StreamSupport.stream(b.spliterator(), false).map(ArangoDBUtil::toEntity).collect(toList()); callBack.accept(entities); }); }
@Override public void delete(DocumentDeleteQuery query, Consumer<Void> callBack) throws ExecuteAsyncQueryException, UnsupportedOperationException { requireNonNull(query, "query is required"); requireNonNull(callBack, "callBack is required"); requireNonNull(query, "query is required"); requireNonNull(callBack, "callBack is required"); AQLQueryResult delete = QueryAQLConverter.delete(query); CompletableFuture<ArangoCursorAsync<BaseDocument>> future = arangoDBAsync.db(database).query(delete.getQuery(), delete.getValues(), null, BaseDocument.class); future.thenAccept(c -> callBack.accept(null)); }
@Override public void insert(DocumentEntity entity, Consumer<DocumentEntity> callBack) throws ExecuteAsyncQueryException , UnsupportedOperationException { requireNonNull(entity, "entity is required"); requireNonNull(callBack, "callBack is required"); String collectionName = entity.getName(); checkCollection(collectionName); BaseDocument baseDocument = getBaseDocument(entity); CompletableFuture<DocumentCreateEntity<BaseDocument>> future = arangoDBAsync.db(database) .collection(collectionName).insertDocument(baseDocument); future.thenAccept(d -> createConsumer(entity, callBack, d.getKey(), d.getId(), d.getRev())); }
@Override public void update(DocumentEntity entity, Consumer<DocumentEntity> callBack) throws ExecuteAsyncQueryException, UnsupportedOperationException { requireNonNull(entity, "entity is required"); requireNonNull(callBack, "callBack is required"); String collectionName = entity.getName(); checkCollection(collectionName); BaseDocument baseDocument = getBaseDocument(entity); CompletableFuture<DocumentUpdateEntity<BaseDocument>> future = arangoDBAsync.db(database).collection(collectionName) .updateDocument(baseDocument.getKey(), baseDocument); future.thenAccept(d -> createConsumer(entity, callBack, d.getKey(), d.getId(), d.getRev())); }