add docker compose
This commit is contained in:
@@ -106,14 +106,22 @@ if TYPE_CHECKING:
|
||||
@dataclass
|
||||
class PrefixKey(str):
|
||||
prefix: str
|
||||
delimiter: str | None = '#'
|
||||
|
||||
else:
|
||||
|
||||
class PrefixKey(str):
|
||||
def __init__(self, prefix: str | None = None) -> None:
|
||||
def __new__(cls, prefix: str, delimiter: str | None = '#') -> str:
|
||||
if not delimiter:
|
||||
return super().__new__(cls, prefix)
|
||||
|
||||
return super().__new__(cls, prefix + delimiter)
|
||||
|
||||
def __init__(self, prefix: str, delimiter: str = '#') -> None:
|
||||
# __init__ is used to store the parameters for later reference.
|
||||
# For immutable types like str, __init__ cannot change the instance's value.
|
||||
self.prefix = prefix
|
||||
self.delimiter = delimiter
|
||||
|
||||
|
||||
class Key(ABC, dict):
|
||||
@@ -672,10 +680,9 @@ class DynamoDBCollection:
|
||||
|
||||
match key.get(PK), key.get(SK):
|
||||
case ComposeKey(), _: # Remove prefix from Partition Key
|
||||
prefix = key[PK].prefix + key[PK].delimiter
|
||||
items = _remove_prefix(items, PK, prefix)
|
||||
items = _remove_prefix(items, PK, key[PK].prefix + key[PK].delimiter)
|
||||
case _, PrefixKey(): # Remove prefix from Sort Key
|
||||
items = _remove_prefix(items, SK, key[SK].prefix)
|
||||
items = _remove_prefix(items, SK, key[SK])
|
||||
|
||||
return {
|
||||
'items': items,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "layercake"
|
||||
version = "0.1.3"
|
||||
version = "0.1.4"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
authors = [
|
||||
|
||||
@@ -58,9 +58,12 @@ def test_keypair():
|
||||
|
||||
def test_prefixkey():
|
||||
key = PrefixKey('emails')
|
||||
assert key == 'emails'
|
||||
assert key == 'emails#'
|
||||
assert isinstance(key, PrefixKey)
|
||||
|
||||
delimiter = PrefixKey('emails', None)
|
||||
assert delimiter == 'emails'
|
||||
|
||||
|
||||
def test_transact_write_items(
|
||||
dynamodb_seeds,
|
||||
@@ -195,7 +198,7 @@ def test_collection_get_items(
|
||||
|
||||
# This data was added from seeds
|
||||
emails = collect.get_items(
|
||||
KeyPair('5OxmMjL-ujoR5IMGegQz', PrefixKey('emails#')),
|
||||
KeyPair('5OxmMjL-ujoR5IMGegQz', PrefixKey('emails')),
|
||||
)
|
||||
assert emails == {
|
||||
'items': [
|
||||
|
||||
2
layercake/uv.lock
generated
2
layercake/uv.lock
generated
@@ -417,7 +417,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "layercake"
|
||||
version = "0.1.1"
|
||||
version = "0.1.4"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "aws-lambda-powertools", extra = ["all"] },
|
||||
|
||||
Reference in New Issue
Block a user