Skip to content

Commit 019039e

Browse files
nkolosnjajiodrotbohm
authored andcommitted
GH-386 - Prefer MongoTemplate.findAndModify(…) over ….updateFirst(…).
Original pull request: GH-380.
1 parent 2d22b24 commit 019039e

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

spring-modulith-events/spring-modulith-events-mongodb/src/main/java/org/springframework/modulith/events/mongodb/MongoDbEventPublicationRepository.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.springframework.data.domain.Sort;
2828
import org.springframework.data.mongodb.core.MongoTemplate;
2929
import org.springframework.data.mongodb.core.query.Criteria;
30+
import org.springframework.data.mongodb.core.query.CriteriaDefinition;
31+
import org.springframework.data.mongodb.core.query.Query;
3032
import org.springframework.data.mongodb.core.query.Update;
3133
import org.springframework.data.util.TypeInformation;
3234
import org.springframework.modulith.events.core.EventPublication;
@@ -79,14 +81,13 @@ public void markCompleted(Object event, PublicationTargetIdentifier identifier,
7981
var criteria = byEventAndListenerId(event, identifier);
8082
var update = Update.update("completionDate", completionDate);
8183

82-
mongoTemplate.updateFirst(query(criteria), update, MongoDbEventPublication.class);
84+
mongoTemplate.findAndModify(defaultQuery(criteria), update, MongoDbEventPublication.class);
8385
}
8486

8587
@Override
8688
public List<EventPublication> findIncompletePublications() {
8789

88-
var query = query(where("completionDate").isNull())
89-
.with(Sort.by("publicationDate").ascending());
90+
var query = defaultQuery(where("completionDate").isNull());
9091

9192
return mongoTemplate.find(query, MongoDbEventPublication.class).stream() //
9293
.map(this::documentToDomain) //
@@ -132,7 +133,7 @@ private List<MongoDbEventPublication> findDocumentsByEventAndTargetIdentifierAnd
132133
Object event, PublicationTargetIdentifier targetIdentifier) {
133134

134135
var criteria = byEventAndListenerId(event, targetIdentifier);
135-
var query = query(criteria).with(Sort.by("publicationDate").ascending());
136+
var query = defaultQuery(criteria);
136137

137138
return mongoTemplate.find(query, MongoDbEventPublication.class);
138139
}
@@ -159,6 +160,10 @@ private EventPublication documentToDomain(MongoDbEventPublication document) {
159160
return new MongoDbEventPublicationAdapter(document);
160161
}
161162

163+
private static Query defaultQuery(CriteriaDefinition criteria) {
164+
return query(criteria).with(Sort.by("publicationDate").ascending());
165+
}
166+
162167
private static class MongoDbEventPublicationAdapter implements EventPublication {
163168

164169
private final MongoDbEventPublication publication;

0 commit comments

Comments
 (0)