add docker compose

This commit is contained in:
2025-03-26 23:21:26 -03:00
parent b1e8f19d39
commit 7021833476
11 changed files with 71 additions and 15 deletions

View File

@@ -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,

View File

@@ -1,6 +1,6 @@
[project]
name = "layercake"
version = "0.1.3"
version = "0.1.4"
description = "Add your description here"
readme = "README.md"
authors = [

View File

@@ -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
View File

@@ -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"] },