This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 10e1a444e3a62ce506d7f349aa84f1a01344cd32
Author: LanKhuat <khuatdang...@gmail.com>
AuthorDate: Tue Apr 14 10:23:47 2020 +0700

    JAMES-3143 Add select all query for MessageId/ImapUid
---
 .../james/mailbox/cassandra/mail/CassandraMessageIdDAO.java  | 12 ++++++++++++
 .../cassandra/mail/CassandraMessageIdToImapUidDAO.java       | 11 +++++++++++
 2 files changed, 23 insertions(+)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
index a6275e3..c2342b3 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
@@ -81,6 +81,7 @@ public class CassandraMessageIdDAO {
     private final PreparedStatement selectUidGte;
     private final PreparedStatement selectUidRange;
     private final PreparedStatement update;
+    private final PreparedStatement listStatement;
 
     @Inject
     public CassandraMessageIdDAO(Session session, CassandraMessageId.Factory 
messageIdFactory) {
@@ -93,6 +94,7 @@ public class CassandraMessageIdDAO {
         this.selectAllUids = prepareSelectAllUids(session);
         this.selectUidGte = prepareSelectUidGte(session);
         this.selectUidRange = prepareSelectUidRange(session);
+        this.listStatement = prepareList(session);
     }
 
     private PreparedStatement prepareDelete(Session session) {
@@ -146,6 +148,11 @@ public class CassandraMessageIdDAO {
                 .where(eq(MAILBOX_ID, bindMarker(MAILBOX_ID))));
     }
 
+    private PreparedStatement prepareList(Session session) {
+        return session.prepare(select(new String[] {MESSAGE_ID, MAILBOX_ID, 
IMAP_UID})
+            .from(TABLE_NAME));
+    }
+
     private PreparedStatement prepareSelectUidGte(Session session) {
         return session.prepare(select(FIELDS)
                 .from(TABLE_NAME)
@@ -224,6 +231,11 @@ public class CassandraMessageIdDAO {
             .map(this::fromRowToComposedMessageIdWithFlags);
     }
 
+    public Flux<ComposedMessageIdWithMetaData> retrieveAllMessages() {
+        return cassandraAsyncExecutor.executeRows(listStatement.bind())
+            .map(this::fromRowToComposedMessageIdWithFlags);
+    }
+
     private Flux<Row> retrieveRows(CassandraId mailboxId, MessageRange set) {
         switch (set.getType()) {
         case ALL:
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
index 0725bcc..83099ba 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
@@ -77,6 +77,7 @@ public class CassandraMessageIdToImapUidDAO {
     private final PreparedStatement update;
     private final PreparedStatement selectAll;
     private final PreparedStatement select;
+    private final PreparedStatement listStatement;
 
     @Inject
     public CassandraMessageIdToImapUidDAO(Session session, 
CassandraMessageId.Factory messageIdFactory) {
@@ -87,6 +88,7 @@ public class CassandraMessageIdToImapUidDAO {
         this.update = prepareUpdate(session);
         this.selectAll = prepareSelectAll(session);
         this.select = prepareSelect(session);
+        this.listStatement = prepareList(session);
     }
 
     private PreparedStatement prepareDelete(Session session) {
@@ -136,6 +138,10 @@ public class CassandraMessageIdToImapUidDAO {
                 .where(eq(MESSAGE_ID, bindMarker(MESSAGE_ID))));
     }
 
+    private PreparedStatement prepareList(Session session) {
+        return session.prepare(select(new String[] {MESSAGE_ID, MAILBOX_ID, 
IMAP_UID}).from(TABLE_NAME));
+    }
+
     private PreparedStatement prepareSelect(Session session) {
         return session.prepare(select(FIELDS)
                 .from(TABLE_NAME)
@@ -193,6 +199,11 @@ public class CassandraMessageIdToImapUidDAO {
                 .map(this::toComposedMessageIdWithMetadata);
     }
 
+    public Flux<ComposedMessageIdWithMetaData> retrieveAllMessages() {
+        return cassandraAsyncExecutor.executeRows(listStatement.bind())
+            .map(row -> toComposedMessageIdWithMetadata(row));
+    }
+
     private ComposedMessageIdWithMetaData toComposedMessageIdWithMetadata(Row 
row) {
         return ComposedMessageIdWithMetaData.builder()
                 .composedMessageId(new ComposedMessageId(


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to