@Override public Source<ResultList<String>, NotUsed> findAll(final Query query) { checkNotNull(query, "query"); final BsonDocument queryFilter = getMongoFilter(query); if (log.isDebugEnabled()) { log.debug("findAll with query filter <{}>.", queryFilter); } final Bson filter = and(filterNotDeleted(), queryFilter); final Optional<Bson> sortOptions = Optional.of(getMongoSort(query)); final int limit = query.getLimit(); final int skip = query.getSkip(); final Bson projection = new Document(PersistenceConstants.FIELD_ID, 1); return Source.fromPublisher(collection.find(filter, Document.class) .sort(sortOptions.orElse(null)) .limit(limit + 1) .skip(skip) .projection(projection) .maxTime(maxQueryTime.getSeconds(), TimeUnit.SECONDS) ) .map(doc -> doc.getString(PersistenceConstants.FIELD_ID)) .fold(new ArrayList<String>(), (list, id) -> { list.add(id); return list; }) .map(resultsPlus0ne -> toResultList(resultsPlus0ne, skip, limit)) .mapError(handleMongoExecutionTimeExceededException()) .log("findAll"); }
@Override public Source<ResultList<String>, NotUsed> findAll(final Query query) { checkNotNull(query, "query"); final BsonDocument queryFilter = getMongoFilter(query); if (log.isDebugEnabled()) { log.debug("findAll with query filter <{}>.", queryFilter); } final Bson filter = and(filterNotDeleted(), queryFilter); final Optional<Bson> sortOptions = Optional.of(getMongoSort(query)); final int limit = query.getLimit(); final int skip = query.getSkip(); final Bson projection = new Document(PersistenceConstants.FIELD_ID, 1); return Source.fromPublisher(collection.find(filter, Document.class) .sort(sortOptions.orElse(null)) .limit(limit + 1) .skip(skip) .projection(projection) .maxTime(maxQueryTime.getSeconds(), TimeUnit.SECONDS) ) .map(doc -> doc.getString(PersistenceConstants.FIELD_ID)) .fold(new ArrayList<String>(), (list, id) -> { list.add(id); return list; }) .map(resultsPlus0ne -> toResultList(resultsPlus0ne, skip, limit)) .mapError(handleMongoExecutionTimeExceededException()) .log("findAll"); }
@Override public Source<Long, NotUsed> count(final Query query) { checkNotNull(query, "query"); final BsonDocument queryFilter = getMongoFilter(query); log.debug("count with query filter <{}>.", queryFilter); final Bson filter = and(filterNotDeleted(), queryFilter); final CountOptions countOptions = new CountOptions() .skip(query.getSkip()) .limit(query.getLimit()) .maxTime(maxQueryTime.getSeconds(), TimeUnit.SECONDS); return Source.fromPublisher(collection.count(filter, countOptions)) .mapError(handleMongoExecutionTimeExceededException()) .log("count"); }
@Override public Source<Long, NotUsed> count(final Query query) { checkNotNull(query, "query"); final BsonDocument queryFilter = getMongoFilter(query); log.debug("count with query filter <{}>.", queryFilter); final Bson filter = and(filterNotDeleted(), queryFilter); final CountOptions countOptions = new CountOptions() .skip(query.getSkip()) .limit(query.getLimit()) .maxTime(maxQueryTime.getSeconds(), TimeUnit.SECONDS); return Source.fromPublisher(collection.count(filter, countOptions)) .mapError(handleMongoExecutionTimeExceededException()) .log("count"); }