Interface TableMetadata
-
- All Known Implementing Classes:
StaticTableMetadata
@ThreadSafe public interface TableMetadata
Interface for an object the stores structural information about a DynamoDb table.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Deprecated Methods Modifier and Type Method Description Collection<String>
allKeys()
Deprecated.UsekeyAttributes()
instead.Map<String,Object>
customMetadata()
Returns all custom metadata for this table.<T> Optional<T>
customMetadataObject(String key, Class<? extends T> objectClass)
Returns a custom metadata object.Collection<String>
indexKeys(String indexName)
Returns all the names of attributes associated with the keys of a specified index.String
indexPartitionKey(String indexName)
Returns the attribute name of the partition key for an index.Optional<String>
indexSortKey(String indexName)
Returns the attribute name of the sort key for an index.Collection<IndexMetadata>
indices()
Returns metadata about all the known indices for this table.Collection<KeyAttributeMetadata>
keyAttributes()
Returns metadata about all the known 'key' attributes for this table, such as primary and secondary index keys, or any other attribute that forms part of the structure of the table.static String
primaryIndexName()
Returns an arbitrary constant that should be used as the primary index name.default Collection<String>
primaryKeys()
Returns the names of the attributes that make up the primary key for the table.default String
primaryPartitionKey()
Returns the attribute name used as the primary partition key for the table.default Optional<String>
primarySortKey()
Returns the attribute name used as the primary sort key for the table.Optional<ScalarAttributeType>
scalarAttributeType(String keyAttribute)
Returns the DynamoDb scalar attribute type associated with a key attribute if one is applicable.
-
-
-
Method Detail
-
indexPartitionKey
String indexPartitionKey(String indexName)
Returns the attribute name of the partition key for an index.- Parameters:
indexName
- The name of the index.- Returns:
- The attribute name representing the partition key for this index.
- Throws:
IllegalArgumentException
- if the index does not exist in the metadata or does not have a partition key associated with it..
-
indexSortKey
Optional<String> indexSortKey(String indexName)
Returns the attribute name of the sort key for an index.- Parameters:
indexName
- The name of the index.- Returns:
- Optional of the attribute name representing the sort key for this index; empty if the index does not have a sort key.
-
customMetadataObject
<T> Optional<T> customMetadataObject(String key, Class<? extends T> objectClass)
Returns a custom metadata object. These objects are used by extensions to the library, therefore the type of object stored is flexible and does not need to be known by the interface.- Type Parameters:
T
- The flexible type for the object being returned. The compiler will typically infer this.- Parameters:
key
- A unique key for the metadata object. This namespace is shared by all extensions, so it is recommended best practice to qualify it with the name of your extension.objectClass
- The java class that the object will be cast to before returning. An exception will be thrown if the stored object cannot be cast to this class.- Returns:
- An optional containing custom metadata object or empty if the object was not found.
-
indexKeys
Collection<String> indexKeys(String indexName)
Returns all the names of attributes associated with the keys of a specified index.- Parameters:
indexName
- The name of the index.- Returns:
- A collection of all key attribute names for that index.
-
allKeys
@Deprecated Collection<String> allKeys()
Deprecated.UsekeyAttributes()
instead.Returns all the names of attributes associated with any index (primary or secondary) known for this table. Additionally any additional attributes that are deemed to be 'key-like' in how they should be treated will also be returned. An example of a 'key-like' attribute that is not actually a key is one tagged as a 'version' attribute when using the versioned record extension.- Returns:
- A collection of all key attribute names for the table.
-
indices
Collection<IndexMetadata> indices()
Returns metadata about all the known indices for this table.- Returns:
- A collection of
IndexMetadata
containing information about the indices.
-
customMetadata
Map<String,Object> customMetadata()
Returns all custom metadata for this table. These entries are used by extensions to the library, therefore the value type of each metadata object stored in the map is not known and is provided asObject
.This method should not be used to inspect individual custom metadata objects, instead use
customMetadataObject(String, Class)
()} as that will perform a type-safety check on the retrieved object.- Returns:
- A map of all the custom metadata for this table.
-
keyAttributes
Collection<KeyAttributeMetadata> keyAttributes()
Returns metadata about all the known 'key' attributes for this table, such as primary and secondary index keys, or any other attribute that forms part of the structure of the table.- Returns:
- A collection of
KeyAttributeMetadata
containing information about the keys.
-
scalarAttributeType
Optional<ScalarAttributeType> scalarAttributeType(String keyAttribute)
Returns the DynamoDb scalar attribute type associated with a key attribute if one is applicable.- Parameters:
keyAttribute
- The key attribute name to return the scalar attribute type of.- Returns:
- Optional
ScalarAttributeType
of the attribute, or empty if attribute is a non-scalar type. - Throws:
IllegalArgumentException
- if the keyAttribute is not found.
-
primaryPartitionKey
default String primaryPartitionKey()
Returns the attribute name used as the primary partition key for the table.- Returns:
- The primary partition key attribute name.
- Throws:
IllegalArgumentException
- if the primary partition key is not known.
-
primarySortKey
default Optional<String> primarySortKey()
Returns the attribute name used as the primary sort key for the table.- Returns:
- An optional of the primary sort key attribute name; empty if this key is not known.
-
primaryKeys
default Collection<String> primaryKeys()
Returns the names of the attributes that make up the primary key for the table.- Returns:
- A collection of attribute names that make up the primary key for the table.
-
primaryIndexName
static String primaryIndexName()
Returns an arbitrary constant that should be used as the primary index name. This pattern creates a common abstraction and simplifies the implementation of operations that also work on secondary indices such as scan() and query().- Returns:
- An arbitrary constant that internally represents the primary index name.
-
-