2727import org .springframework .data .domain .Sort ;
2828import org .springframework .data .mongodb .core .MongoTemplate ;
2929import 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 ;
3032import org .springframework .data .mongodb .core .query .Update ;
3133import org .springframework .data .util .TypeInformation ;
3234import 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