private static Map<String, AttributeValue> buildTableAttributeValuesMap(final OneTimeTokenAccount record) {
        val values = new HashMap<String, AttributeValue>();
        values.put(ColumnNames.NAME.getColumnName(), AttributeValue.builder().s(String.valueOf(record.getName())).build());
        values.put(ColumnNames.USERID.getColumnName(), AttributeValue.builder().s(record.getUsername().toLowerCase(Locale.ENGLISH)).build());
        values.put(ColumnNames.SECRET.getColumnName(), AttributeValue.builder().s(String.valueOf(record.getSecretKey())).build());
        values.put(ColumnNames.SCRATCH_CODES.getColumnName(), AttributeValue.builder()
            .ss(record.getScratchCodes().stream().map(String::valueOf).collect(Collectors.toList())).build());

        if (!record.getProperties().isEmpty()) {
            values.put(ColumnNames.PROPERTIES.getColumnName(), AttributeValue.builder().ss(record.getProperties()).build());
        }
        val time = record.getRegistrationDate().toInstant().toEpochMilli();
        values.put(ColumnNames.ID.getColumnName(), AttributeValue.builder().n(String.valueOf(record.getId())).build());
        values.put(ColumnNames.REGISTRATION_DATE.getColumnName(),
            AttributeValue.builder().n(String.valueOf(time)).build());
        values.put(ColumnNames.VALIDATION_CODE.getColumnName(),
            AttributeValue.builder().n(String.valueOf(record.getValidationCode())).build());
        LOGGER.debug("Created attribute values [{}] based on [{}]", values, record);
        return values;
    }
This is {@link DynamoDbGoogleAuthenticatorTokenCredentialRepositoryFacilitator}.

@author Misagh Moayyed
@since 6.5.0
support/cas-server-support-gauth-dynamodb/src/main/java/org/apereo/cas/gauth/credential/DynamoDbGoogleAuthenticatorTokenCredentialRepositoryFacilitator.java