chibenwa commented on code in PR #2408:
URL: https://github.com/apache/james-project/pull/2408#discussion_r1760867949


##########
mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxFlagInconsistenciesService.java:
##########
@@ -65,34 +68,78 @@ Snapshot snapshot() {
         }
     }
 
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(SolveMessageDeletedInconsistenciesService.class);
+    public interface SolveMessageFlagInconsistencyStrategy {
+        Predicate<CassandraMessageMetadata> filterOutFlagInconsistencies();
+
+        Mono<Void> removeAllByMailboxId(CassandraId cassandraId);
+
+        Mono<Void> addEntry(CassandraId cassandraId, List<MessageUid> uids);
+    }
+
+    public record SolveMailboxDeletedFlagInconsistenciesStrategy(
+        CassandraDeletedMessageDAO deletedMessageDAO) implements 
SolveMessageFlagInconsistencyStrategy {
+        @Override
+        public Predicate<CassandraMessageMetadata> 
filterOutFlagInconsistencies() {
+            return metaData -> 
metaData.getComposedMessageId().getFlags().contains(Flags.Flag.DELETED);
+        }
+
+        @Override
+        public Mono<Void> removeAllByMailboxId(CassandraId cassandraId) {
+            return deletedMessageDAO.removeAll(cassandraId);
+        }
+
+        @Override
+        public Mono<Void> addEntry(CassandraId cassandraId, List<MessageUid> 
uids) {
+            return deletedMessageDAO.addDeleted(cassandraId, uids);
+        }
+    }
+
+    public record SoleMailboxRecentFlagInconsistenciesStrategy(
+        CassandraMailboxRecentsDAO mailboxRecentDAO) implements 
SolveMessageFlagInconsistencyStrategy {
+        @Override
+        public Predicate<CassandraMessageMetadata> 
filterOutFlagInconsistencies() {
+            return metaData -> 
metaData.getComposedMessageId().getFlags().contains(Flags.Flag.RECENT);
+        }
+
+        @Override
+        public Mono<Void> removeAllByMailboxId(CassandraId cassandraId) {
+            return mailboxRecentDAO.delete(cassandraId);
+        }
+
+        @Override
+        public Mono<Void> addEntry(CassandraId cassandraId, List<MessageUid> 
uids) {
+            return mailboxRecentDAO.addToRecent(cassandraId, uids);
+        }
+    }
+
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(SolveMailboxFlagInconsistenciesService.class);
+    private final SolveMessageFlagInconsistencyStrategy 
fixInconsistenciesStrategy;

Review Comment:
   ```suggestion
       private static final Logger LOGGER = 
LoggerFactory.getLogger(SolveMailboxFlagInconsistenciesService.class);
       
       private final SolveMessageFlagInconsistencyStrategy 
fixInconsistenciesStrategy;
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to