Skip to content

Commit

Permalink
https://github.com/javers/javers/issues/958
Browse files Browse the repository at this point in the history
commitId query Mongo fix
  • Loading branch information
bartoszwalacik committed Jul 12, 2020
1 parent 4e0bbe6 commit d7071d7
Showing 1 changed file with 10 additions and 5 deletions.
Expand Up @@ -42,6 +42,7 @@
*/
public class MongoRepository implements JaversRepository, ConfigurationAware {
private final static int DEFAULT_CACHE_SIZE = 5000;
private final static double COMMIT_ID_PRECISION = 0.005;

private static final int DESC = -1;
private final MongoSchemaManager mongoSchemaManager;
Expand Down Expand Up @@ -274,11 +275,11 @@ private Bson applyQueryParams(Bson query, Optional<QueryParams> queryParams) {
query = Filters.and(query, Filters.lte(COMMIT_DATE, UtilTypeCoreAdapters.serialize(params.to().get())));
}
if (params.toCommitId().isPresent()) {
query = Filters.and(query, Filters.lte(COMMIT_ID, commitIdforQuery(params.toCommitId().get())));
query = Filters.and(query, Filters.lte(COMMIT_ID, params.toCommitId().get().valueAsNumber().doubleValue() + COMMIT_ID_PRECISION));
}
if (params.commitIds().size() > 0) {
query = Filters.in(COMMIT_ID, params.commitIds().stream()
.map(it -> commitIdforQuery(it)).collect(Collectors.toSet()));
query = Filters.or(params.commitIds().stream()
.map(it -> commitIdFilter(it)).collect(Collectors.toList()));
}
if (params.version().isPresent()) {
query = Filters.and(query, createVersionQuery(params.version().get()));
Expand All @@ -300,11 +301,15 @@ private Bson applyQueryParams(Bson query, Optional<QueryParams> queryParams) {
return query;
}

private Object commitIdforQuery(CommitId commitId) {
private Bson commitIdFilter(CommitId commitId) {
if (commitId.getMinorId() > 0) {
commitId.valueAsNumber().doubleValue();
return Filters.and(
Filters.gte(COMMIT_ID, commitId.valueAsNumber().doubleValue() - COMMIT_ID_PRECISION),
Filters.lte(COMMIT_ID, commitId.valueAsNumber().doubleValue() + COMMIT_ID_PRECISION)
);
}
return commitId.getMajorId();
return Filters.eq(COMMIT_ID, commitId.getMajorId());
}

private FindIterable<Document> applyQueryParams(FindIterable<Document> findIterable, Optional<QueryParams> queryParams) {
Expand Down

0 comments on commit d7071d7

Please sign in to comment.