update layercake
This commit is contained in:
@@ -22,9 +22,14 @@ LIMIT = 25
|
||||
@router.get('/')
|
||||
def me():
|
||||
user: AuthenticatedUser = router.context['user']
|
||||
|
||||
acls = collect.get_items(KeyPair(user.id, PrefixKey('acls#')), limit=LIMIT)
|
||||
workspaces = collect.get_items(KeyPair(user.id, PrefixKey('orgs#')), limit=LIMIT)
|
||||
acls = collect.get_items(
|
||||
KeyPair(user.id, PrefixKey('acls#')),
|
||||
limit=LIMIT,
|
||||
)
|
||||
workspaces = collect.get_items(
|
||||
KeyPair(user.id, PrefixKey('orgs#')),
|
||||
limit=LIMIT,
|
||||
)
|
||||
|
||||
return {
|
||||
'acls': acls['items'],
|
||||
|
||||
@@ -55,7 +55,12 @@ def get_users():
|
||||
)
|
||||
|
||||
|
||||
@router.post('/', compress=True, tags=['User'], summary='Create user')
|
||||
@router.post(
|
||||
'/',
|
||||
compress=True,
|
||||
tags=['User'],
|
||||
summary='Create user',
|
||||
)
|
||||
def post_user(payload: User):
|
||||
return Response(status_code=HTTPStatus.CREATED)
|
||||
|
||||
@@ -65,12 +70,17 @@ class NewPasswordPayload(BaseModel):
|
||||
new_password: Annotated[str, StringConstraints(min_length=6)]
|
||||
|
||||
|
||||
@router.patch('/<id>', compress=True, tags=['User'], summary='')
|
||||
@router.patch('/<id>', compress=True, tags=['User'])
|
||||
def patch_reset(id: str, payload: NewPasswordPayload):
|
||||
return Response(status_code=HTTPStatus.OK)
|
||||
|
||||
|
||||
@router.get('/<id>', compress=True, tags=['User'], summary='Get user')
|
||||
@router.get(
|
||||
'/<id>',
|
||||
compress=True,
|
||||
tags=['User'],
|
||||
summary='Get user',
|
||||
)
|
||||
def get_user(id: str):
|
||||
return collect.get_item(KeyPair(id, '0'))
|
||||
|
||||
@@ -87,11 +97,9 @@ def get_idp(id: str):
|
||||
summary='Get user emails',
|
||||
)
|
||||
def get_emails(id: str):
|
||||
start_key = router.current_event.get_query_string_value('start_key', None)
|
||||
|
||||
return collect.get_items(
|
||||
KeyPair(id, PrefixKey('emails#')),
|
||||
start_key=start_key,
|
||||
start_key=router.current_event.get_query_string_value('start_key', None),
|
||||
)
|
||||
|
||||
|
||||
@@ -102,13 +110,11 @@ def get_emails(id: str):
|
||||
summary='Get user logs',
|
||||
)
|
||||
def get_logs(id: str):
|
||||
start_key = router.current_event.get_query_string_value('start_key', None)
|
||||
|
||||
return collect.get_items(
|
||||
# Post-migration: uncomment to enable PartitionKey with a composite key (id with `logs` prefix).
|
||||
# PartitionKey(ComposeKey(id, prefix='logs')),
|
||||
PartitionKey(ComposeKey(id, prefix='log', delimiter=':')),
|
||||
start_key=start_key,
|
||||
start_key=router.current_event.get_query_string_value('start_key', None),
|
||||
)
|
||||
|
||||
|
||||
@@ -119,9 +125,7 @@ def get_logs(id: str):
|
||||
summary='Get user orgs',
|
||||
)
|
||||
def get_orgs(id: str):
|
||||
start_key = router.current_event.get_query_string_value('start_key', None)
|
||||
|
||||
return collect.get_items(
|
||||
KeyPair(id, PrefixKey('orgs#')),
|
||||
start_key=start_key,
|
||||
start_key=router.current_event.get_query_string_value('start_key', None),
|
||||
)
|
||||
|
||||
@@ -23,7 +23,7 @@ Globals:
|
||||
Architectures:
|
||||
- x86_64
|
||||
Layers:
|
||||
- !Sub arn:aws:lambda:sa-east-1:336641857101:layer:layercake:18
|
||||
- !Sub arn:aws:lambda:sa-east-1:336641857101:layer:layercake:20
|
||||
Environment:
|
||||
Variables:
|
||||
TZ: America/Sao_Paulo
|
||||
|
||||
@@ -40,6 +40,26 @@ def test_get_emails(
|
||||
}
|
||||
|
||||
|
||||
def test_get_orgs(
|
||||
mock_app,
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
http_api_proxy: HttpApiProxy,
|
||||
lambda_context: LambdaContext,
|
||||
):
|
||||
mock_app.users.collect = DynamoDBCollection(dynamodb_persistence_layer)
|
||||
|
||||
r = mock_app.lambda_handler(
|
||||
http_api_proxy(
|
||||
raw_path='/users/5OxmMjL-ujoR5IMGegQz/orgs',
|
||||
method=HTTPMethod.GET,
|
||||
),
|
||||
lambda_context,
|
||||
)
|
||||
|
||||
assert r['statusCode'] == HTTPStatus.OK
|
||||
|
||||
|
||||
def test_get_logs(
|
||||
mock_app,
|
||||
dynamodb_seeds,
|
||||
@@ -57,9 +77,23 @@ def test_get_logs(
|
||||
lambda_context,
|
||||
)
|
||||
|
||||
# This data was added from seeds
|
||||
assert r['statusCode'] == HTTPStatus.OK
|
||||
|
||||
print(r['body'])
|
||||
assert json.loads(r['body']) == {
|
||||
'items': [
|
||||
{
|
||||
'sk': '2024-02-08T16:42:33.776409-03:00',
|
||||
'action': 'OPEN_EMAIL',
|
||||
'id': '5OxmMjL-ujoR5IMGegQz',
|
||||
},
|
||||
{
|
||||
'sk': '2019-03-25T00:00:00-03:00',
|
||||
'action': 'CLICK_EMAIL',
|
||||
'id': '5OxmMjL-ujoR5IMGegQz',
|
||||
},
|
||||
],
|
||||
'last_key': None,
|
||||
}
|
||||
|
||||
|
||||
def test_post_user(
|
||||
|
||||
2
http-api/uv.lock
generated
2
http-api/uv.lock
generated
@@ -444,7 +444,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "layercake"
|
||||
version = "0.1.1"
|
||||
version = "0.1.3"
|
||||
source = { directory = "../layercake" }
|
||||
dependencies = [
|
||||
{ name = "aws-lambda-powertools", extra = ["all"] },
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
## Layercake
|
||||
|
||||
@@ -130,6 +130,10 @@ class PartitionKey(Key):
|
||||
def __init__(self, pk: str) -> None:
|
||||
super().__init__(**{PK: pk})
|
||||
|
||||
def __repr__(self) -> str:
|
||||
pk = self[PK]
|
||||
return f'PartitionKey({pk!r})'
|
||||
|
||||
def expr_attr_name(self) -> dict:
|
||||
return {'#pk': PK}
|
||||
|
||||
@@ -653,13 +657,10 @@ class DynamoDBCollection:
|
||||
else '#pk = :pk'
|
||||
)
|
||||
|
||||
expr_attr_name.update(key.expr_attr_name())
|
||||
expr_attr_values.update(key.expr_attr_values())
|
||||
|
||||
res = self.persistence_layer.query(
|
||||
key_cond_expr=key_cond_expr,
|
||||
expr_attr_name=expr_attr_name,
|
||||
expr_attr_values=expr_attr_values,
|
||||
expr_attr_name=key.expr_attr_name() | expr_attr_name,
|
||||
expr_attr_values=key.expr_attr_values() | expr_attr_values,
|
||||
filter_expr=filter_expr,
|
||||
index_forward=index_forward,
|
||||
limit=limit,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "layercake"
|
||||
version = "0.1.2"
|
||||
version = "0.1.3"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
authors = [
|
||||
|
||||
Reference in New Issue
Block a user