@Override public FindPublisher<TResult> limit(final int limit) { wrapped.limit(limit); return this; }
@Override public FindPublisher<TResult> sort(final Bson sort) { wrapped.sort(sort); return this; }
@Override public FindPublisher<TResult> batchSize(final int batchSize) { wrapped.batchSize(batchSize); return this; }
@Override public Future<Messages.EventWrapperBatch> loadEventWrappersForCorrelationIdAsync(final String aggregateType, final String correlationId, final long fromJournalId) { final Document query = new Document("correlationid", correlationId); query.append("jid", new Document("$gt", fromJournalId)); final com.mongodb.async.client.FindIterable<Document> dbObjects = MongoDbOperations.doDbOperation(() -> dbasync.getCollection(aggregateType).find(query).sort(new Document("jid", 1)).limit(eventReadLimit)); final Promise<Messages.EventWrapperBatch> promise = Futures.promise(); dbObjects.map(document -> deSerialize(document,aggregateType)) .into(new ArrayList<>(), (SingleResultCallback<ArrayList>) (list, throwable) -> promise.success(Messages.EventWrapperBatch.newBuilder() .addAllEvents(list) .setAggregateType(aggregateType) .setReadAllEvents(list.size() != eventReadLimit) .build())); return promise.future(); }
@Override public Future<EventBatch> loadEventsForAggregateIdAsync(final String aggregateType, final String aggregateId, final String fromJournalId) { final Document query = new Document("rid", aggregateId); if (fromJournalId != null) query.append("jid", new Document("$gt", Long.parseLong(fromJournalId))); final ArrayList<Event> events = new ArrayList<>(); com.mongodb.async.client.FindIterable<Document> dbObjects = MongoDbOperations.doDbOperation(() -> dbasync.getCollection(aggregateType).find(query).sort(new Document("jid", 1)).limit(eventReadLimit)); final Promise<EventBatch> promise = Futures.promise(); final Future<EventBatch> theFuture = promise.future(); dbObjects.forEach(document -> events.add(deSerialize(((Binary) document.get("d")).getData())), (result, t) -> promise.success(new EventBatch(aggregateType, aggregateId, events, events.size() != eventReadLimit))); return theFuture; }
@Override public FindPublisher<TResult> filter(final Bson filter) { wrapped.filter(filter); return this; }
@Override public FindPublisher<TResult> cursorType(final CursorType cursorType) { wrapped.cursorType(cursorType); return this; }
@Override public FindPublisher<TResult> collation(final Collation collation) { wrapped.collation(collation); return this; }
@Override public FindPublisher<TResult> hint(final Bson hint) { wrapped.hint(hint); return this; }
@Override public FindPublisher<TResult> comment(final String comment) { wrapped.comment(comment); return this; }
@Override public Future<Messages.EventWrapperBatch> loadEventWrappersForAggregateIdAsync(final String aggregateType, final String aggregateRootId, final long fromJournalId) { final Document query = new Document("rid", aggregateRootId); query.append("jid", new Document("$gt", fromJournalId)); final com.mongodb.async.client.FindIterable<Document> dbObjects = MongoDbOperations.doDbOperation(() -> dbasync.getCollection(aggregateType).find(query).sort(new Document("jid", 1)).limit(eventReadLimit)); final Promise<Messages.EventWrapperBatch> promise = Futures.promise(); dbObjects.map(document -> deSerialize(document,aggregateType)) .into(new ArrayList<>(), (SingleResultCallback<ArrayList>) (list, throwable) -> promise.success(Messages.EventWrapperBatch.newBuilder() .addAllEvents(list) .setAggregateType(aggregateType) .setReadAllEvents(list.size() != eventReadLimit) .setAggregateRootId(aggregateRootId) .build())); return promise.future(); }