43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
from layercake.dateutils import now
|
|
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
|
|
|
|
|
|
def update_policies(
|
|
id: str,
|
|
/,
|
|
payment_policy: dict | None = None,
|
|
billing_policy: dict | None = None,
|
|
*,
|
|
persistence_layer: DynamoDBPersistenceLayer,
|
|
):
|
|
now_ = now()
|
|
payment_sk = 'metadata#payment_policy'
|
|
billing_sk = 'metadata#billing_policy'
|
|
|
|
with persistence_layer.transact_writer() as transact:
|
|
if payment_policy:
|
|
transact.put(
|
|
item={
|
|
'id': id,
|
|
'sk': payment_sk,
|
|
'created_at': now_,
|
|
}
|
|
| payment_policy
|
|
)
|
|
else:
|
|
transact.delete(key=KeyPair(id, payment_sk))
|
|
|
|
if billing_policy:
|
|
transact.put(
|
|
item={
|
|
'id': id,
|
|
'sk': billing_sk,
|
|
'created_at': now_,
|
|
}
|
|
| billing_policy
|
|
)
|
|
else:
|
|
transact.delete(key=KeyPair(id, billing_sk))
|
|
|
|
return True
|