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