Conditional Expressions
DynamoDB's optimistic locking primitive:
dynamodb.update_item()
.condition_expression("version = :expected_version")
.expression_attribute_values(":expected_version", AttributeValue::N("5".to_string()))
.update_expression("SET balance = :new_bal, version = :new_version")
.send().await
.map_err(|e| match e.into_service_error() {
UpdateItemError::ConditionalCheckFailedException(_) => AppError::StaleVersion,
e => AppError::from(e),
})?;