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