From 019039e441cb70f144ed33a0a2ed9e239a6fd9ba Mon Sep 17 00:00:00 2001 From: nkolosnjaji Date: Fri, 17 Nov 2023 23:25:12 +0100 Subject: [PATCH] =?UTF-8?q?GH-386=20-=20Prefer=20MongoTemplate.findAndModi?= =?UTF-8?q?fy(=E2=80=A6)=20over=20=E2=80=A6.updateFirst(=E2=80=A6).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original pull request: GH-380. --- .../mongodb/MongoDbEventPublicationRepository.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbEventPublicationRepository.java b/spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbEventPublicationRepository.java index 99361b3e..ac60820a 100644 --- a/spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbEventPublicationRepository.java +++ b/spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbEventPublicationRepository.java @@ -27,6 +27,8 @@ import java.util.UUID; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.CriteriaDefinition; +import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.util.TypeInformation; import org.springframework.modulith.events.core.EventPublication; @@ -79,14 +81,13 @@ class MongoDbEventPublicationRepository implements EventPublicationRepository { var criteria = byEventAndListenerId(event, identifier); var update = Update.update("completionDate", completionDate); - mongoTemplate.updateFirst(query(criteria), update, MongoDbEventPublication.class); + mongoTemplate.findAndModify(defaultQuery(criteria), update, MongoDbEventPublication.class); } @Override public List findIncompletePublications() { - var query = query(where("completionDate").isNull()) - .with(Sort.by("publicationDate").ascending()); + var query = defaultQuery(where("completionDate").isNull()); return mongoTemplate.find(query, MongoDbEventPublication.class).stream() // .map(this::documentToDomain) // @@ -132,7 +133,7 @@ class MongoDbEventPublicationRepository implements EventPublicationRepository { Object event, PublicationTargetIdentifier targetIdentifier) { var criteria = byEventAndListenerId(event, targetIdentifier); - var query = query(criteria).with(Sort.by("publicationDate").ascending()); + var query = defaultQuery(criteria); return mongoTemplate.find(query, MongoDbEventPublication.class); } @@ -159,6 +160,10 @@ class MongoDbEventPublicationRepository implements EventPublicationRepository { return new MongoDbEventPublicationAdapter(document); } + private static Query defaultQuery(CriteriaDefinition criteria) { + return query(criteria).with(Sort.by("publicationDate").ascending()); + } + private static class MongoDbEventPublicationAdapter implements EventPublication { private final MongoDbEventPublication publication;