private void markAggregationRecordAsSubmitted()

in src/main/java/com/amazonaws/partners/saasfactory/metering/aggregation/StripeBillingPublish.java [206:252]


    private void markAggregationRecordAsSubmitted(AggregationEntry aggregationEntry) {
        // Update the attribute that marks an item as submitted
        Map<String, AttributeValue> aggregationEntryKey = new HashMap<>();
        AttributeValue tenantIDValue = AttributeValue.builder()
                .s(aggregationEntry.getTenantID())
                .build();
        aggregationEntryKey.put(PRIMARY_KEY_NAME, tenantIDValue);

        AttributeValue aggregationStringValue = AttributeValue.builder()
                .s(formatAggregationEntry(aggregationEntry.getPeriodStart().toEpochMilli()))
                .build();
        aggregationEntryKey.put(SORT_KEY_NAME, aggregationStringValue);

        Map<String, String> expressionAttributeNames = new HashMap<>();
        expressionAttributeNames.put(SUBMITTED_KEY_EXPRESSION_NAME, SUBMITTED_KEY_ATTRIBUTE_NAME);

        Map<String, AttributeValue> expressionAttributeValues = new HashMap<>();

        AttributeValue keySubmittedValue = AttributeValue.builder()
                .bool(true)
                .build();
        expressionAttributeValues.put(KEY_SUBMITTED_EXPRESSION_VALUE, keySubmittedValue);

        String updateExpression = String.format("SET %s = %s",
                                                SUBMITTED_KEY_EXPRESSION_NAME,
                                                KEY_SUBMITTED_EXPRESSION_VALUE);

        UpdateItemRequest updateRequest = UpdateItemRequest.builder()
                .tableName(this.tableConfig.getTableName())
                .key(aggregationEntryKey)
                .updateExpression(updateExpression)
                .expressionAttributeNames(expressionAttributeNames)
                .expressionAttributeValues(expressionAttributeValues)
                .build();

        try {
            ddb.updateItem(updateRequest);
        } catch (ResourceNotFoundException|InternalServerErrorException|TransactionCanceledException e) {
            this.logger.error(e.getMessage());
        }

        String aggregationEntryString = formatAggregationEntry(aggregationEntry.getPeriodStart().toEpochMilli());
        this.logger.info("Marked aggregation record {} for tenant {} as published",
                aggregationEntry.getTenantID(),
                aggregationEntryString
                );
    }