/*
* Copyright DataStax, Inc.
*
* Licensed 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 com.datastax.oss.driver.api.core.metadata.schema;
import com.datastax.oss.driver.api.core.CqlIdentifier;
import com.datastax.oss.driver.shaded.guava.common.collect.ImmutableList;
import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
A table or materialized view in the schema metadata. /** A table or materialized view in the schema metadata. */
public interface RelationMetadata extends Describable {
@NonNull
CqlIdentifier getKeyspace();
@NonNull
CqlIdentifier getName();
The unique id generated by the server for this element. /** The unique id generated by the server for this element. */
Optional<UUID> getId();
Convenience method to get all the primary key columns (partition key + clustering columns) in a
single call.
Note that this creates a new list instance on each call.
See Also: - getPartitionKey()
- getClusteringColumns()
/**
* Convenience method to get all the primary key columns (partition key + clustering columns) in a
* single call.
*
* <p>Note that this creates a new list instance on each call.
*
* @see #getPartitionKey()
* @see #getClusteringColumns()
*/
@NonNull
default List<ColumnMetadata> getPrimaryKey() {
return ImmutableList.<ColumnMetadata>builder()
.addAll(getPartitionKey())
.addAll(getClusteringColumns().keySet())
.build();
}
@NonNull
List<ColumnMetadata> getPartitionKey();
@NonNull
Map<ColumnMetadata, ClusteringOrder> getClusteringColumns();
@NonNull
Map<CqlIdentifier, ColumnMetadata> getColumns();
@NonNull
default Optional<ColumnMetadata> getColumn(@NonNull CqlIdentifier columnId) {
return Optional.ofNullable(getColumns().get(columnId));
}
Shortcut for getColumn(CqlIdentifier.fromCql(columnName))
. /**
* Shortcut for {@link #getColumn(CqlIdentifier) getColumn(CqlIdentifier.fromCql(columnName))}.
*/
@NonNull
default Optional<ColumnMetadata> getColumn(@NonNull String columnName) {
return getColumn(CqlIdentifier.fromCql(columnName));
}
The options of this table or materialized view.
This corresponds to the WITH
clauses in the CREATE
statement that would recreate this element. The exact set of keys and the types of the values depend on the server version that this metadata was extracted from. For example, in Cassandra 2.2 and below,
WITH caching
takes a string argument, whereas starting with Cassandra 3.0 it is a map.
/**
* The options of this table or materialized view.
*
* <p>This corresponds to the {@code WITH} clauses in the {@code CREATE} statement that would
* recreate this element. The exact set of keys and the types of the values depend on the server
* version that this metadata was extracted from. For example, in Cassandra 2.2 and below, {@code
* WITH caching} takes a string argument, whereas starting with Cassandra 3.0 it is a map.
*/
@NonNull
Map<CqlIdentifier, Object> getOptions();
}