package com.caliverse.admin.dynamodb.domain.atrrib;

import com.caliverse.admin.dynamodb.entity.MailItem;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.*;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;

import java.util.List;

@Setter
@ToString(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class MailAttrib{
    @JsonProperty("mail_guid")
    private String mailGuid;

    @JsonProperty("is_read")
    private String isRead;
    @JsonProperty("is_get_item")
    private String isGetItem;
    @JsonProperty("is_system_mail")
    private String isSystemMail;

    @JsonProperty("sender_nickname")
    private String senderNickName;
    @JsonProperty("sender_guid")
    private String senderGuid;
    @JsonProperty("receiver_nickname")
    private String receiverNickName;
    @JsonProperty("receiver_guid")
    private String receiverGuid;

    private String title;
    private String text;

    @JsonProperty("create_time")
    private String createTime;
    @JsonProperty("expire_time")
    private String expireTime;
    @JsonProperty("is_text_by_meta_data")
    private String isTextByMetaData;
    @JsonProperty("item_list")
    private List<MailItemAttrib> itemList;
    @JsonProperty("package_order_id")
    private String packageOrderId;
    @JsonProperty("contents_arguments")
    private List<String> contentsArguments;

    @DynamoDbAttribute("mail_guid")
    public String getMailGuid() {
        return mailGuid;
    }

    @DynamoDbAttribute("is_read")
    public String getIsRead() {
        return isRead;
    }

    @DynamoDbAttribute("is_get_item")
    public String getIsGetItem() {
        return isGetItem;
    }

    @DynamoDbAttribute("is_system_mail")
    public String getIsSystemMail() {
        return isSystemMail;
    }

    @DynamoDbAttribute("sender_nickname")
    public String getSenderNickName() {
        return senderNickName;
    }
    @DynamoDbAttribute("sender_guid")
    public String getSenderGuid() {
        return senderGuid;
    }
    @DynamoDbAttribute("receiver_nickname")
    public String getReceiverNickName() {
        return receiverNickName;
    }
    @DynamoDbAttribute("receiver_guid")
    public String getReceiverGuid() {
        return receiverGuid;
    }
    @DynamoDbAttribute("title")
    public String getTitle() {
        return title;
    }
    @DynamoDbAttribute("text")
    public String getText() {
        return text;
    }
    @DynamoDbAttribute("create_time")
    public String getCreateTime() {
        return createTime;
    }
    @DynamoDbAttribute("expire_time")
    public String getExpireTime() {
        return expireTime;
    }
    @DynamoDbAttribute("is_text_by_meta_data")
    public String getIsTextByMetaData() {
        return isTextByMetaData;
    }
    @DynamoDbAttribute("item_list")
    public List<MailItemAttrib> getItemList() {
        return itemList;
    }
    @DynamoDbAttribute("package_order_id")
    public String getPackageOrderId() {
        return packageOrderId;
    }
    @DynamoDbAttribute("contents_arguments")
    public List<String> getContentsArguments() {
        return contentsArguments;
    }
}
