1 /*
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License").
5  * You may not use this file except in compliance with the License.
6  * A copy of the License is located at
7  *
8  *  http://aws.amazon.com/apache2.0
9  *
10  * or in the "license" file accompanying this file. This file is distributed
11  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12  * express or implied. See the License for the specific language governing
13  * permissions and limitations under the License.
14  */
15 
16 package software.amazon.awssdk.enhanced.dynamodb.mapper.annotations;
17 
18 import java.lang.annotation.ElementType;
19 import java.lang.annotation.Retention;
20 import java.lang.annotation.RetentionPolicy;
21 import java.lang.annotation.Target;
22 import software.amazon.awssdk.annotations.SdkPublicApi;
23 import software.amazon.awssdk.enhanced.dynamodb.internal.mapper.BeanTableSchemaAttributeTags;
24 
25 /**
26  * Denotes this attribute as being the optional primary sort key of the DynamoDb table. This attribute must map to a
27  * DynamoDb scalar type (string, number or binary) to be valid.
28  *
29  * Example using {@link DynamoDbSortKey}:
30  * <pre>
31  * {@code
32  *    @DynamoDbBean
33  *    public class Customer {
34  *        private String accountId;
35  *        private int subId;
36  *
37  *        @DynamoDbPartitionKey
38  *        public String getAccountId() {
39  *              return this.accountId;
40  *        }
41  *
42  *        public void setAccountId(String accountId) {
43  *              this.accountId = accountId;
44  *         }
45  *
46  *        @DynamoDbSortKey
47  *        public int getSubId() {
48  *              return this.subId;
49  *        }
50  *        public void setSubId(int subId) {
51  *              this.subId = subId;
52  *        }
53  *    }
54  * }
55  * </pre>
56  */
57 @SdkPublicApi
58 @Target({ElementType.METHOD})
59 @Retention(RetentionPolicy.RUNTIME)
60 @BeanTableSchemaAttributeTag(BeanTableSchemaAttributeTags.class)
61 public @interface DynamoDbSortKey {
62 }
63