fix retain key

This commit is contained in:
2025-05-23 10:30:54 -03:00
parent 812470aae4
commit a7ee787378
26 changed files with 117 additions and 166 deletions

View File

@@ -23,7 +23,7 @@ def create_course(
transact.put(
item={
'id': course.id,
'sk': 'tenant',
'sk': 'metadata#tenant',
'org_id': org.id,
'name': org.name,
'create_date': now_,
@@ -42,7 +42,8 @@ def update_course(
transact = TransactItems(persistence_layer.table_name)
transact.update(
key=KeyPair(id, '0'),
update_expr='SET #name = :name, access_period = :access_period, cert = :cert, update_date = :update_date',
update_expr='SET #name = :name, access_period = :access_period, \
cert = :cert, update_date = :update_date',
expr_attr_names={
'#name': 'name',
},

View File

@@ -17,24 +17,24 @@ def update_policies(
transact.put(
item={
'id': id,
'sk': 'payment_policy',
'sk': 'metadata#payment_policy',
'create_date': now_,
}
| payment_policy
)
else:
transact.delete(key=KeyPair(id, 'payment_policy'))
transact.delete(key=KeyPair(id, 'metadata#payment_policy'))
if billing_policy:
transact.put(
item={
'id': id,
'sk': 'billing_policy',
'sk': 'metadata#billing_policy',
'create_date': now_,
}
| billing_policy
)
else:
transact.delete(key=KeyPair(id, 'billing_policy'))
transact.delete(key=KeyPair(id, 'metadata#billing_policy'))
return persistence_layer.transact_write_items(transact)

View File

@@ -4,7 +4,6 @@ from typing import TypedDict
from aws_lambda_powertools.event_handler.exceptions import (
BadRequestError,
)
from botocore.exceptions import ClientError
from botocore.tokens import timedelta
from layercake.dateutils import now, ttl
from layercake.dynamodb import (
@@ -14,11 +13,6 @@ from layercake.dynamodb import (
TransactItems,
)
class CPFConflictError(BadRequestError):
pass
User = TypedDict('User', {'id': str, 'name': str, 'cpf': str})
@@ -60,6 +54,10 @@ def update_user(
cond_expr='attribute_not_exists(sk)',
)
class CPFConflictError(BadRequestError):
def __init__(self, msg: str):
super().__init__('Cpf already exists')
if user.cpf != old_cpf:
transact.put(
item={
@@ -69,18 +67,14 @@ def update_user(
'create_date': now_,
},
cond_expr='attribute_not_exists(sk)',
exc_cls=CPFConflictError,
)
# Ensures that the old CPF is discarded
if old_cpf:
transact.delete(key=KeyPair('cpf', old_cpf))
try:
persistence_layer.transact_write_items(transact)
except ClientError:
raise CPFConflictError('CPF is already in use.')
else:
return True
return persistence_layer.transact_write_items(transact)
def add_email(
@@ -109,6 +103,11 @@ def add_email(
},
cond_expr='attribute_not_exists(sk)',
)
class EmailConflictError(BadRequestError):
def __init__(self, msg: str):
super().__init__('Email already exists')
transact.put(
item={
'id': 'email',
@@ -117,12 +116,10 @@ def add_email(
'create_date': now_,
},
cond_expr='attribute_not_exists(sk)',
exc_cls=EmailConflictError,
)
try:
return persistence_layer.transact_write_items(transact)
except ClientError:
raise BadRequestError('Email already exists.')
return persistence_layer.transact_write_items(transact)
def del_email(
@@ -141,6 +138,7 @@ def del_email(
key=KeyPair(id, ComposeKey(email, prefix='emails')),
cond_expr='email_primary <> :primary',
expr_attr_values={':primary': True},
exc_cls=BadRequestError,
)
transact.update(
key=KeyPair(id, '0'),
@@ -150,10 +148,7 @@ def del_email(
},
)
try:
return persistence_layer.transact_write_items(transact)
except ClientError:
raise BadRequestError('Cannot remove the primary email.')
return persistence_layer.transact_write_items(transact)
def set_email_as_primary(
@@ -188,10 +183,8 @@ def set_email_as_primary(
)
transact.update(
key=KeyPair(id, '0'),
update_expr=(
'SET email = :email, email_verified = :email_verified, '
'update_date = :update_date'
),
update_expr='SET email = :email, email_verified = :email_verified, \
update_date = :update_date',
expr_attr_values={
':email': new_email,
':email_verified': email_verified,