add fulfillment
This commit is contained in:
@@ -1,29 +0,0 @@
|
|||||||
from uuid import uuid4
|
|
||||||
|
|
||||||
from aws_lambda_powertools import Logger
|
|
||||||
from aws_lambda_powertools.utilities.data_classes import (
|
|
||||||
EventBridgeEvent,
|
|
||||||
event_source,
|
|
||||||
)
|
|
||||||
from aws_lambda_powertools.utilities.typing import LambdaContext
|
|
||||||
from layercake.dateutils import now
|
|
||||||
|
|
||||||
logger = Logger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
@event_source(data_class=EventBridgeEvent)
|
|
||||||
@logger.inject_lambda_context
|
|
||||||
def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
|
|
||||||
new_image = event.detail['new_image']
|
|
||||||
now_ = now()
|
|
||||||
org_id = ''
|
|
||||||
order_id = new_image['id']
|
|
||||||
|
|
||||||
docx = {
|
|
||||||
'id': f'SEAT#ORG#{org_id}',
|
|
||||||
'sk': f'ORDER#{order_id}#ENROLLMENT#{uuid4()}',
|
|
||||||
'course': {},
|
|
||||||
'created_at': now_,
|
|
||||||
}
|
|
||||||
|
|
||||||
return True
|
|
||||||
@@ -10,7 +10,15 @@ from layercake.dynamodb import DynamoDBPersistenceLayer, SortKey, TransactKey
|
|||||||
|
|
||||||
from boto3clients import dynamodb_client
|
from boto3clients import dynamodb_client
|
||||||
from config import ENROLLMENT_TABLE
|
from config import ENROLLMENT_TABLE
|
||||||
from enrollment import Course, Enrollment, Kind, LinkedEntity, User, enroll
|
from enrollment import (
|
||||||
|
Course,
|
||||||
|
Enrollment,
|
||||||
|
Kind,
|
||||||
|
LinkedEntity,
|
||||||
|
SubscriptionFrozenError,
|
||||||
|
User,
|
||||||
|
enroll,
|
||||||
|
)
|
||||||
|
|
||||||
logger = Logger(__name__)
|
logger = Logger(__name__)
|
||||||
dyn = DynamoDBPersistenceLayer(ENROLLMENT_TABLE, dynamodb_client)
|
dyn = DynamoDBPersistenceLayer(ENROLLMENT_TABLE, dynamodb_client)
|
||||||
@@ -48,19 +56,25 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
|
|||||||
user=user,
|
user=user,
|
||||||
)
|
)
|
||||||
|
|
||||||
return enroll(
|
try:
|
||||||
enrollment,
|
enroll(
|
||||||
org=metadata.get('org', None),
|
enrollment,
|
||||||
subscription=subscription,
|
org=metadata.get('org', None),
|
||||||
# Reuse the deduplication window if it exists
|
subscription=subscription,
|
||||||
deduplication_window={'offset_days': offset_days} if offset_days else None,
|
# Reuse the deduplication window if it exists
|
||||||
linked_entities=frozenset(
|
deduplication_window={'offset_days': offset_days} if offset_days else None,
|
||||||
{
|
# The enrollment must know its source
|
||||||
LinkedEntity(
|
linked_entities=frozenset(
|
||||||
id=new_image['id'],
|
{
|
||||||
kind=Kind.ENROLLMENT,
|
LinkedEntity(
|
||||||
),
|
id=new_image['id'],
|
||||||
},
|
kind=Kind.ENROLLMENT,
|
||||||
),
|
),
|
||||||
persistence_layer=dyn,
|
},
|
||||||
)
|
),
|
||||||
|
persistence_layer=dyn,
|
||||||
|
)
|
||||||
|
except SubscriptionFrozenError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return True
|
||||||
|
|||||||
32
enrollments-events/app/events/start_fulfillment.py
Normal file
32
enrollments-events/app/events/start_fulfillment.py
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# from uuid import uuid4
|
||||||
|
|
||||||
|
from aws_durable_execution_sdk_python import DurableContext, durable_execution
|
||||||
|
from aws_lambda_powertools import Logger
|
||||||
|
from aws_lambda_powertools.utilities.data_classes import (
|
||||||
|
EventBridgeEvent,
|
||||||
|
event_source,
|
||||||
|
)
|
||||||
|
|
||||||
|
# from layercake.dateutils import now
|
||||||
|
|
||||||
|
logger = Logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@event_source(data_class=EventBridgeEvent)
|
||||||
|
@durable_execution
|
||||||
|
def lambda_handler(event: EventBridgeEvent, context: DurableContext) -> bool:
|
||||||
|
# new_image = event.detail['new_image']
|
||||||
|
# now_ = now()
|
||||||
|
# org_id = ''
|
||||||
|
# order_id = new_image['id']
|
||||||
|
|
||||||
|
# docx = {
|
||||||
|
# 'id': f'SEAT#ORG#{org_id}',
|
||||||
|
# 'sk': f'ORDER#{order_id}#ENROLLMENT#{uuid4()}',
|
||||||
|
# 'course': {},
|
||||||
|
# 'created_at': now_,
|
||||||
|
|
||||||
|
logger.info(event)
|
||||||
|
# }
|
||||||
|
|
||||||
|
return True
|
||||||
Reference in New Issue
Block a user