in lambda/python/rs_integration_function/ddb/ddb_state_table.py [0:0]
def mark_statement_name_as_handled(self, statement_name: StatementName, finished_event_details: dict) -> None:
"""
We take the convention that if a TTL is set the statement_name has been processed. The TTL will allow automatic
cleanup from DDB.
Args:
statement_name:
finished_event_details: information reported by Data API finished event
"""
ttl_field = self.get_ttl_value()
logger.debug({
l_statement_name: str(statement_name),
l_finished_event_details: finished_event_details,
l_ttl: ttl_field
})
response = self.update_item(
Key={
DDB_ID: statement_name.execution_arn,
DDB_INVOCATION_ID: statement_name.invocation_id,
},
UpdateExpression="SET #T = :ttl, #D = :details",
ReturnValues='ALL_OLD',
ReturnConsumedCapacity='NONE',
ExpressionAttributeNames={
'#T': DDB_TTL,
'#D': DDB_FINISHED_EVENT_DETAILS
},
ExpressionAttributeValues={
':ttl': ttl_field,
':details': finished_event_details
}
)
logger.debug({
l_statement_name: statement_name,
l_response: response,
l_ttl: ttl_field
})