remove deduplication as default

This commit is contained in:
2025-10-17 16:17:07 -03:00
parent 94d00ba203
commit f7babaca9f
15 changed files with 114 additions and 58 deletions

View File

@@ -5,9 +5,10 @@ from enum import Enum
from typing import NotRequired, TypedDict
from layercake.dateutils import now, ttl
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from layercake.dynamodb import DynamoDBPersistenceLayer
from layercake.strutils import md5_hash
from config import DEDUP_WINDOW_OFFSET_DAYS
from schemas import Enrollment
Org = TypedDict(
@@ -124,33 +125,38 @@ def enroll(
# Prevents the user from enrolling in the same course again until
# the deduplication window expires or is removed.
offset_days = (
int(deduplication_window['offset_days'])
if deduplication_window
else DEDUP_WINDOW_OFFSET_DAYS
)
ttl_ = ttl(
start_dt=now_,
days=course.access_period - offset_days,
)
transact.put(
item={
'id': 'LOCK',
'sk': lock_hash,
'enrollment_id': enrollment.id,
'created_at': now_,
'ttl': ttl_,
},
cond_expr='attribute_not_exists(sk)',
exc_cls=DeduplicationConflictError,
)
transact.put(
item={
'id': enrollment.id,
'sk': 'LOCK',
'hash': lock_hash,
'created_at': now_,
'ttl': ttl_,
},
)
# The deduplication window can be recalculated based on user settings.
if deduplication_window:
offset_days = int(deduplication_window['offset_days'])
ttl_ = ttl(
start_dt=now_,
days=course.access_period - offset_days,
)
transact.put(
item={
'id': 'LOCK',
'sk': lock_hash,
'enrollment_id': enrollment.id,
'created_at': now_,
'ttl': ttl_,
},
cond_expr='attribute_not_exists(sk)',
exc_cls=DeduplicationConflictError,
)
transact.put(
item={
'id': enrollment.id,
'sk': 'LOCK',
'hash': lock_hash,
'created_at': now_,
'ttl': ttl_,
},
)
# Deduplication window can be recalculated if needed
transact.put(
item={
'id': enrollment.id,
@@ -159,11 +165,5 @@ def enroll(
'created_at': now_,
},
)
else:
transact.condition(
key=KeyPair('LOCK', lock_hash),
cond_expr='attribute_not_exists(sk)',
exc_cls=DeduplicationConflictError,
)
return True