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

import com.caliverse.admin.dynamodb.entity.EAccountCreationType;
import com.caliverse.admin.dynamodb.entity.EAccountType;
import com.caliverse.admin.dynamodb.entity.EAuthAdminLevelType;
import com.caliverse.admin.dynamodb.entity.ELanguageType;
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.DynamoDbBean;

import java.util.List;

@Getter
@Setter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class AccountBaseAttrib extends DynamoDBAttribBase {
    @JsonProperty("account_id")
    private String accountId;
    @JsonProperty("user_guid")
    private String userGuid;
    private String password;
    @JsonProperty("account_type")
    private EAccountType AccountType;
    @JsonProperty("language_type")
    private ELanguageType languageType;
    @JsonProperty("auth_amdin_level_type")
    private EAuthAdminLevelType authAdminLevelType;
    @JsonProperty("account_creation_type")
    private EAccountCreationType accountCreationType;
    @JsonProperty("account_creation_meta_id")
    private Integer accountCreationMetaId;
    @JsonProperty("login_datetime")
    private String loginDateTime;
    @JsonProperty("logout_datetime")
    private String logoutDateTime;
    @JsonProperty("created_datetime")
    private String createdDateTime;
    @JsonProperty("block_start_datetime")
    private String blockStartDateTime;
    @JsonProperty("block_end_datetime")
    private String blockEndDateTime;
    @JsonProperty("block_policy")
    private List<String> blockPolicy;
    @JsonProperty("block_reason")
    private String blockReason;
    @JsonProperty("access_token")
    private Long accessToken;
    @JsonProperty("sso_account_auth_jwt")
    private String ssoAccountAuthJWT;
}
