update
This commit is contained in:
@@ -19,7 +19,6 @@ from middlewares import AuthenticationMiddleware
|
|||||||
from routes import (
|
from routes import (
|
||||||
courses,
|
courses,
|
||||||
enrollments,
|
enrollments,
|
||||||
enrollments_,
|
|
||||||
lookup,
|
lookup,
|
||||||
orders,
|
orders,
|
||||||
orgs,
|
orgs,
|
||||||
@@ -54,7 +53,6 @@ app = APIGatewayHttpResolver(
|
|||||||
app.use(middlewares=[AuthenticationMiddleware()])
|
app.use(middlewares=[AuthenticationMiddleware()])
|
||||||
app.include_router(courses.router, prefix='/courses')
|
app.include_router(courses.router, prefix='/courses')
|
||||||
app.include_router(enrollments.router, prefix='/enrollments')
|
app.include_router(enrollments.router, prefix='/enrollments')
|
||||||
app.include_router(enrollments_.router, prefix='/new/enrollments')
|
|
||||||
app.include_router(enrollments.vacancies, prefix='/enrollments')
|
app.include_router(enrollments.vacancies, prefix='/enrollments')
|
||||||
app.include_router(enrollments.enroll, prefix='/enrollments')
|
app.include_router(enrollments.enroll, prefix='/enrollments')
|
||||||
app.include_router(enrollments.cancel, prefix='/enrollments')
|
app.include_router(enrollments.cancel, prefix='/enrollments')
|
||||||
|
|||||||
@@ -228,6 +228,7 @@ class KeyPair(Key):
|
|||||||
*,
|
*,
|
||||||
rename_key: str | None = None,
|
rename_key: str | None = None,
|
||||||
retain_key: bool = False,
|
retain_key: bool = False,
|
||||||
|
table_name: str | None = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Initializes a composite key using partition and sort key.
|
Initializes a composite key using partition and sort key.
|
||||||
@@ -242,11 +243,13 @@ class KeyPair(Key):
|
|||||||
If provided, renames the sort key in the output.
|
If provided, renames the sort key in the output.
|
||||||
retain_key : bool, optional
|
retain_key : bool, optional
|
||||||
Use the key itself as value if True; otherwise, use the extracted value.
|
Use the key itself as value if True; otherwise, use the extracted value.
|
||||||
|
table_name : str, optional
|
||||||
"""
|
"""
|
||||||
|
|
||||||
super().__init__(**{PK: pk, SK: sk})
|
super().__init__(**{PK: pk, SK: sk})
|
||||||
self._rename_key = rename_key
|
self._rename_key = rename_key
|
||||||
self._retain_key = retain_key
|
self._retain_key = retain_key
|
||||||
|
self._table_name = table_name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def rename_key(self) -> str | None:
|
def rename_key(self) -> str | None:
|
||||||
@@ -256,6 +259,10 @@ class KeyPair(Key):
|
|||||||
def retain_key(self) -> bool:
|
def retain_key(self) -> bool:
|
||||||
return self._retain_key
|
return self._retain_key
|
||||||
|
|
||||||
|
@property
|
||||||
|
def table_name(self) -> str | None:
|
||||||
|
return self._table_name
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
pk, sk, *_ = self.values()
|
pk, sk, *_ = self.values()
|
||||||
return f'KeyPair({pk!r}, {sk!r})'
|
return f'KeyPair({pk!r}, {sk!r})'
|
||||||
@@ -297,7 +304,12 @@ class KeyChain:
|
|||||||
if not isinstance(other, KeyPair):
|
if not isinstance(other, KeyPair):
|
||||||
raise TypeError('Can only add a KeyPair to a KeyChain')
|
raise TypeError('Can only add a KeyPair to a KeyChain')
|
||||||
|
|
||||||
return KeyChain(pairs=self.pairs + (other,))
|
if other not in self.pairs:
|
||||||
|
pairs = self.pairs + (other,)
|
||||||
|
else:
|
||||||
|
pairs = self.pairs
|
||||||
|
|
||||||
|
return KeyChain(pairs=pairs)
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
@@ -311,6 +323,7 @@ class TransactKey:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
pk: str
|
pk: str
|
||||||
|
table_name: str | None = None
|
||||||
pairs: tuple[KeyPair, ...] = ()
|
pairs: tuple[KeyPair, ...] = ()
|
||||||
|
|
||||||
def __add__(self, other: SortKey | KeyPair) -> 'TransactKey':
|
def __add__(self, other: SortKey | KeyPair) -> 'TransactKey':
|
||||||
@@ -318,9 +331,18 @@ class TransactKey:
|
|||||||
raise TypeError('Can only add a SortKey and KeyPair to a TransactKey')
|
raise TypeError('Can only add a SortKey and KeyPair to a TransactKey')
|
||||||
|
|
||||||
if isinstance(other, SortKey):
|
if isinstance(other, SortKey):
|
||||||
other = KeyPair(self.pk, other)
|
other = KeyPair(self.pk, other, table_name=self.table_name)
|
||||||
|
|
||||||
return TransactKey(pk=self.pk, pairs=self.pairs + (other,))
|
if other not in self.pairs:
|
||||||
|
pairs = self.pairs + (other,)
|
||||||
|
else:
|
||||||
|
pairs = self.pairs
|
||||||
|
|
||||||
|
return TransactKey(
|
||||||
|
pk=self.pk,
|
||||||
|
table_name=self.table_name,
|
||||||
|
pairs=pairs,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TransactionCanceledReason(TypedDict):
|
class TransactionCanceledReason(TypedDict):
|
||||||
@@ -884,6 +906,7 @@ class DynamoDBCollection:
|
|||||||
key: Key,
|
key: Key,
|
||||||
*,
|
*,
|
||||||
ttl: int | datetime | None = None,
|
ttl: int | datetime | None = None,
|
||||||
|
cond_expr: str | None = None,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Creates a new item, or replaces an old item with a new item.
|
"""Creates a new item, or replaces an old item with a new item.
|
||||||
@@ -895,6 +918,8 @@ class DynamoDBCollection:
|
|||||||
ttl: int or datetime, optional
|
ttl: int or datetime, optional
|
||||||
Time-to-live for the item, specified as a timestamp integer
|
Time-to-live for the item, specified as a timestamp integer
|
||||||
or datetime object.
|
or datetime object.
|
||||||
|
cond_expr: str, optional
|
||||||
|
Conditional expression for deletion.
|
||||||
**kwargs
|
**kwargs
|
||||||
Additional data to be stored with the item.
|
Additional data to be stored with the item.
|
||||||
|
|
||||||
@@ -909,7 +934,10 @@ class DynamoDBCollection:
|
|||||||
if isinstance(ttl, datetime):
|
if isinstance(ttl, datetime):
|
||||||
kwargs.update({'ttl': timestamp(ttl)})
|
kwargs.update({'ttl': timestamp(ttl)})
|
||||||
|
|
||||||
return self.persistence_layer.put_item(item=key | kwargs)
|
return self.persistence_layer.put_item(
|
||||||
|
item=key | kwargs,
|
||||||
|
cond_expr=cond_expr,
|
||||||
|
)
|
||||||
|
|
||||||
def delete_item(
|
def delete_item(
|
||||||
self,
|
self,
|
||||||
@@ -1013,7 +1041,7 @@ class DynamoDBCollection:
|
|||||||
transact_items = [
|
transact_items = [
|
||||||
{
|
{
|
||||||
'Get': {
|
'Get': {
|
||||||
'TableName': getattr(pair, 'table_name', table_name),
|
'TableName': pair.table_name or table_name,
|
||||||
'Key': serialize(pair),
|
'Key': serialize(pair),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "layercake"
|
name = "layercake"
|
||||||
version = "0.6.5"
|
version = "0.6.11"
|
||||||
description = "Packages shared dependencies to optimize deployment and ensure consistency across functions."
|
description = "Packages shared dependencies to optimize deployment and ensure consistency across functions."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
authors = [
|
authors = [
|
||||||
@@ -23,6 +23,7 @@ dependencies = [
|
|||||||
"arnparse>=0.0.2",
|
"arnparse>=0.0.2",
|
||||||
"weasyprint>=65.0",
|
"weasyprint>=65.0",
|
||||||
"smart-open[s3]>=7.1.0",
|
"smart-open[s3]>=7.1.0",
|
||||||
|
"sqlite-utils>=3.38",
|
||||||
]
|
]
|
||||||
|
|
||||||
[dependency-groups]
|
[dependency-groups]
|
||||||
|
|||||||
@@ -269,7 +269,10 @@ def test_collection_get_items(
|
|||||||
):
|
):
|
||||||
collect = DynamoDBCollection(dynamodb_persistence_layer)
|
collect = DynamoDBCollection(dynamodb_persistence_layer)
|
||||||
doc = collect.get_items(
|
doc = collect.get_items(
|
||||||
TransactKey('cJtK9SsnJhKPyxESe7g3DG')
|
TransactKey(
|
||||||
|
'cJtK9SsnJhKPyxESe7g3DG', table_name=dynamodb_persistence_layer.table_name
|
||||||
|
)
|
||||||
|
+ SortKey('0')
|
||||||
+ SortKey('0')
|
+ SortKey('0')
|
||||||
+ SortKey('metadata#billing_policy', path_spec='payment_method')
|
+ SortKey('metadata#billing_policy', path_spec='payment_method')
|
||||||
+ SortKey('metadata#payment_policy', remove_prefix='metadata#'),
|
+ SortKey('metadata#payment_policy', remove_prefix='metadata#'),
|
||||||
|
|||||||
2
layercake/uv.lock
generated
2
layercake/uv.lock
generated
@@ -589,7 +589,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "layercake"
|
name = "layercake"
|
||||||
version = "0.6.4"
|
version = "0.6.5"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "arnparse" },
|
{ name = "arnparse" },
|
||||||
|
|||||||
Reference in New Issue
Block a user