JAMES-1925 Adding cassandra table for MailboxPath mailbox indexing
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3c2dc467 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3c2dc467 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3c2dc467 Branch: refs/heads/master Commit: 3c2dc467bde2c77cf28954b95f4f19cfd1ae4113 Parents: 7b85c97 Author: Benoit Tellier <[email protected]> Authored: Tue Feb 14 09:21:18 2017 +0700 Committer: Antoine Duprat <[email protected]> Committed: Wed Feb 15 13:12:38 2017 +0100 ---------------------------------------------------------------------- .../modules/CassandraMailboxModule.java | 13 ++++++-- .../table/CassandraMailboxPathTable.java | 32 ++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/3c2dc467/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java index b664098..8858504 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java @@ -20,10 +20,13 @@ package org.apache.james.mailbox.cassandra.modules; import com.datastax.driver.core.schemabuilder.SchemaBuilder; +import com.google.common.collect.ImmutableList; + import org.apache.james.backends.cassandra.components.CassandraIndex; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathTable; import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable; import java.util.Arrays; @@ -41,7 +44,7 @@ public class CassandraMailboxModule implements CassandraModule { private final List<CassandraType> types; public CassandraMailboxModule() { - tables = Collections.singletonList( + tables = ImmutableList.of( new CassandraTable(CassandraMailboxTable.TABLE_NAME, SchemaBuilder.createTable(CassandraMailboxTable.TABLE_NAME) .ifNotExists() @@ -49,7 +52,13 @@ public class CassandraMailboxModule implements CassandraModule { .addUDTColumn(CassandraMailboxTable.MAILBOX_BASE, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE)) .addColumn(CassandraMailboxTable.NAME, text()) .addColumn(CassandraMailboxTable.PATH, text()) - .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint()))); + .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())), + new CassandraTable(CassandraMailboxPathTable.TABLE_NAME, + SchemaBuilder.createTable(CassandraMailboxPathTable.TABLE_NAME) + .ifNotExists() + .addUDTPartitionKey(CassandraMailboxPathTable.NAMESPACE_AND_USER, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE)) + .addClusteringColumn(CassandraMailboxPathTable.MAILBOX_NAME, text()) + .addColumn(CassandraMailboxPathTable.MAILBOX_ID, timeuuid()))); index = Arrays.asList( new CassandraIndex( SchemaBuilder.createIndex(CassandraIndex.INDEX_PREFIX + CassandraMailboxTable.TABLE_NAME) http://git-wip-us.apache.org/repos/asf/james-project/blob/3c2dc467/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMailboxPathTable.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMailboxPathTable.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMailboxPathTable.java new file mode 100644 index 0000000..be9eb54 --- /dev/null +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMailboxPathTable.java @@ -0,0 +1,32 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.mailbox.cassandra.table; + +public interface CassandraMailboxPathTable { + + String TABLE_NAME = "mailboxPath"; + + String NAMESPACE_AND_USER = "namespaceAndUser"; + + String MAILBOX_NAME = "mailboxName"; + + String MAILBOX_ID = "mailboxId"; + +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
