This commit is contained in:
2025-07-10 17:36:51 -03:00
parent 72b1338135
commit bd6fbf7166
19 changed files with 250 additions and 16 deletions

View File

@@ -5,7 +5,7 @@ ORDER_TABLE: str = os.getenv('ORDER_TABLE') # type: ignore
COURSE_TABLE: str = os.getenv('COURSE_TABLE') # type: ignore
ENROLLMENT_TABLE: str = os.getenv('ENROLLMENT_TABLE') # type: ignore
# Post-migration: remove the lines below
# Post-migration: Remove the following lines
if os.getenv('AWS_LAMBDA_FUNCTION_NAME'):
SQLITE_DATABASE = 'courses_export_2025-06-18_110214.db'
else:

View File

@@ -64,4 +64,6 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
},
)
logger.info('IDs updated')
return True

View File

@@ -32,7 +32,7 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
result = enrollment_layer.collection.query(
KeyPair(
# Post-migration: uncomment the following line
# Post-migration: Uncomment the following line
# ComposeKey(tenant_id, prefix='slots#org'),
ComposeKey(tenant_id, prefix='vacancies'),
order_id,
@@ -45,10 +45,12 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
for pair in result['items']:
batch.delete_item(
Key={
# Post-migration: rename `vacancies` to `slots#org`
# Post-migration: Rename `vacancies` to `slots#org`
'id': {'S': ComposeKey(pair['id'], prefix='vacancies')},
'sk': {'S': pair['sk']},
}
)
logger.info('Slots deleted')
return True

View File

@@ -6,6 +6,7 @@ from aws_lambda_powertools.utilities.data_classes import (
from aws_lambda_powertools.utilities.typing import LambdaContext
from layercake.dateutils import now
from layercake.dynamodb import (
ComposeKey,
DynamoDBPersistenceLayer,
KeyPair,
)
@@ -41,7 +42,23 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
)
except Exception:
logger.info('Failed to update status to EXPIRED', order_id=new_image['id'])
order_layer.put_item(
item={
'id': new_image['id'],
'sk': ComposeKey('failed', prefix=new_image['sk']),
'created_at': now_,
}
)
return False
else:
logger.info('Status set to EXPIRED', order_id=new_image['id'])
order_layer.put_item(
item={
'id': new_image['id'],
'sk': ComposeKey('completed', prefix=new_image['sk']),
'created_at': now_,
}
)
return True

View File

@@ -1,5 +1,6 @@
import json
import sqlite3
from decimal import ROUND_HALF_UP, Decimal
from aws_lambda_powertools import Logger
from aws_lambda_powertools.utilities.data_classes import (
@@ -33,9 +34,15 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
for item in items:
course = _get_course(item['id'])
unit_price = Decimal(item['unit_price'])
new_items.append(
item
| {
'unit_price': unit_price.quantize(
Decimal('0.01'), rounding=ROUND_HALF_UP
)
}
| (
{
'id': course.get('metadata__betaeducacao_id'),

View File

@@ -21,11 +21,14 @@ def test_schedule_expired(
}
}
assert app.lambda_handler(event, lambda_context)
assert {
assert app.lambda_handler(event, lambda_context) # type: ignore
expected = {
'sk': 'schedules#set_as_expired',
'ttl': Decimal('1751715285'),
'id': '123',
} == dynamodb_persistence_layer.get_item(
}
r = dynamodb_persistence_layer.get_item(
key=KeyPair('123', 'schedules#set_as_expired')
)
assert r['ttl'] == expected['ttl']

View File

@@ -21,8 +21,7 @@ def test_assign_tenant_cnpj(
assert app.lambda_handler(event, lambda_context) # type: ignore
result = dynamodb_persistence_layer.collection.query(
r = dynamodb_persistence_layer.collection.query(
PartitionKey('9omWNKymwU5U4aeun6mWzZ')
)
assert 3 == len(result['items'])
assert 2 == len(r['items'])

View File

@@ -1,7 +1,6 @@
{"id": {"S": "cJtK9SsnJhKPyxESe7g3DG"}, "sk": {"S": "metadata#payment_policy"}, "due_days": {"N": "90"}}
{"id": {"S": "cJtK9SsnJhKPyxESe7g3DG"}, "sk": {"S": "metadata#billing_policy"}, "billing_day": {"N": "1"}, "payment_method": {"S": "PIX"}}
{"id": {"S": "9omWNKymwU5U4aeun6mWzZ"}, "sk": {"S": "0"}, "total": {"N": "398"}, "status": {"S": "PENDING"}, "payment_method": {"S": "MANUAL"}, "tenant": {"S": "cJtK9SsnJhKPyxESe7g3DG"}}
{"id": {"S": "9omWNKymwU5U4aeun6mWzZ"}, "sk": {"S": "0"}, "total": {"N": "398"}, "status": {"S": "PENDING"}, "payment_method": {"S": "MANUAL"}, "tenant": {"S": "cJtK9SsnJhKPyxESe7g3DG"}}
{"id": {"S": "cnpj"}, "sk": {"S": "15608435000190"}, "user_id": {"S": "cJtK9SsnJhKPyxESe7g3DG"}}
{"id": {"S": "email"}, "sk": {"S": "sergio@somosbeta.com.br"}, "user_id": {"S": "5OxmMjL-ujoR5IMGegQz"}}
{"id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "sk": {"S": "0"}, "name": {"S": "Sérgio R Siqueira"}}