diff --git a/konviva-events/app/events/enroll.py b/konviva-events/app/events/enroll.py index aaba335..07670e3 100644 --- a/konviva-events/app/events/enroll.py +++ b/konviva-events/app/events/enroll.py @@ -4,6 +4,7 @@ from aws_lambda_powertools.utilities.data_classes import ( event_source, ) from aws_lambda_powertools.utilities.typing import LambdaContext +from layercake.dateutils import now from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair import konviva @@ -20,6 +21,7 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: new_image = event.detail['new_image'] user_id = new_image['user_id'] class_id = new_image['class_id'] + now_ = now() try: enrollment_id = konviva.enroll( @@ -30,11 +32,22 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: logger.exception(err) return False - return enrollment_layer.update_item( - key=KeyPair(new_image['id'], 'konviva'), - update_expr='SET enrollment_id = :enrollment_id', - cond_expr='attribute_exists(sk)', - expr_attr_values={ - ':enrollment_id': enrollment_id, - }, - ) + with enrollment_layer.transact_writer() as transact: + transact.update( + key=KeyPair(new_image['id'], 'konviva'), + update_expr='SET enrollment_id = :enrollment_id', + cond_expr='attribute_exists(sk)', + expr_attr_values={ + ':enrollment_id': enrollment_id, + }, + ) + transact.put( + item={ + 'id': 'konviva', + 'sk': str(enrollment_id), + 'enrollment_id': new_image['id'], + 'created_at': now_, + } + ) + + return True