diff --git a/layercake/layercake/dynamodb.py b/layercake/layercake/dynamodb.py index 319c77a..4fb2dd9 100644 --- a/layercake/layercake/dynamodb.py +++ b/layercake/layercake/dynamodb.py @@ -23,6 +23,8 @@ DELIMITER = os.getenv('DYNAMODB_DELIMITER', '#') logger = Logger(__name__) +serializer = TypeSerializer() +deserializer = TypeDeserializer() def _serialize_python_type(value: Any) -> str | dict | list: @@ -42,14 +44,12 @@ def _serialize_python_type(value: Any) -> str | dict | list: def serialize(value: dict) -> dict: - serializer = TypeSerializer() return { k: serializer.serialize(_serialize_python_type(v)) for k, v in value.items() } def deserialize(value: dict) -> dict: - deserializer = TypeDeserializer() return {k: deserializer.deserialize(v) for k, v in value.items()} @@ -128,7 +128,7 @@ class PartitionKey(Key): """Represents a partition key for DynamoDB queries""" def __init__(self, pk: str) -> None: - super().__init__(**{PK: pk, SK: None}) + super().__init__(**{PK: pk}) def expr_attr_name(self) -> dict: return {'#pk': PK} @@ -670,7 +670,7 @@ class DynamoDBCollection: last_key = _startkey_b64encode(res['last_key']) if res['last_key'] else None # Remove prefix from Sort Key if `key[SK]` is a PrefixKey - if isinstance(key[SK], PrefixKey): + if isinstance(key.get(SK), PrefixKey): prefix = key[SK].prefix items = [item | {SK: item[SK].removeprefix(prefix)} for item in items]