add access_expires_at to enrollment

This commit is contained in:
2025-09-17 20:56:37 -03:00
parent 51bf5191e9
commit a7a7cc6cc1
3 changed files with 15 additions and 3 deletions

View File

@@ -1,3 +1,4 @@
from datetime import timedelta
from typing import NotRequired, Self, TypedDict from typing import NotRequired, Self, TypedDict
from layercake.dateutils import now, ttl from layercake.dateutils import now, ttl
@@ -48,12 +49,14 @@ def enroll(
user = enrollment.user user = enrollment.user
course = enrollment.course course = enrollment.course
lock_hash = md5_hash('%s%s' % (user.id, course.id)) lock_hash = md5_hash('%s%s' % (user.id, course.id))
access_expires_at = now_ + timedelta(days=course.access_period)
with persistence_layer.transact_writer() as transact: with persistence_layer.transact_writer() as transact:
transact.put( transact.put(
item={ item={
'sk': '0', 'sk': '0',
'created_at': now_, 'created_at': now_,
'access_expires_at': access_expires_at,
**enrollment.model_dump(), **enrollment.model_dump(),
} }
| ({'subscription_covered': True} if subscription else {}) | ({'subscription_covered': True} if subscription else {})

View File

@@ -1,5 +1,6 @@
import json import json
import sqlite3 import sqlite3
from datetime import timedelta
from aws_lambda_powertools import Logger from aws_lambda_powertools import Logger
from aws_lambda_powertools.utilities.data_classes import ( from aws_lambda_powertools.utilities.data_classes import (
@@ -34,8 +35,17 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
try: try:
course = _get_course(new_image['course']['id']) course = _get_course(new_image['course']['id'])
access_period = int(course['access_period'])
access_expires_at = now_ + timedelta(days=access_period)
with enrollment_layer.transact_writer() as transact: with enrollment_layer.transact_writer() as transact:
transact.update(
key=KeyPair(new_image['id'], new_image['sk']),
update_expr='SET access_expires_at = :access_expires_at',
expr_attr_values={
':access_expires_at': access_expires_at,
},
)
transact.put( transact.put(
item={ item={
'id': new_image['id'], 'id': new_image['id'],
@@ -49,7 +59,7 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
'id': new_image['id'], 'id': new_image['id'],
'sk': 'METADATA#COURSE', 'sk': 'METADATA#COURSE',
'created_at': now_, 'created_at': now_,
'access_period': int(course['access_period']), 'access_period': access_period,
'cert': course.get('cert', None), 'cert': course.get('cert', None),
} }
) )

View File

@@ -26,5 +26,4 @@ def test_reenroll(
} }
} }
} }
enrollment = app.lambda_handler(event, lambda_context) # type: ignore assert app.lambda_handler(event, lambda_context) # type: ignore
print(enrollment)