From 3e44761e6952d8cb1139659c86e782faca51a297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Wed, 4 Jun 2025 10:23:48 -0300 Subject: [PATCH] update related ids --- README.md | 2 +- http-api/app/rules/enrollment.py | 10 +++++++--- http-api/tests/routes/test_enrollments.py | 9 ++++++++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 272bbcd..e853d73 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Toda compra é relacionada a empresa responsável, que é definida como o `tenan O gestor responsável pela ação também é relacionado à compra, com base no email presente na compra. ```json -{"id": "10", "sk": "0", "metadata__tenant_id": "100", "metadata__related_ids": ["100", "123"]} +{"id": "10", "sk": "0", "metadata__tenant_id": "100", "metadata__related_ids": ["ORG#100", "USER#123"]} {"id": "10", "sk": "metadata#tenant", "tenant_id": "100"} {"id": "10", "sk": "related_ids#org", "org_id": "100"} {"id": "10", "sk": "related_ids#user", "user_id": "123"} diff --git a/http-api/app/rules/enrollment.py b/http-api/app/rules/enrollment.py index c19780a..f24f3b6 100644 --- a/http-api/app/rules/enrollment.py +++ b/http-api/app/rules/enrollment.py @@ -18,7 +18,7 @@ DeduplicationWindow = TypedDict('DeduplicationWindow', {'offset_days': int}) class RelatedId(str): def __new__(cls, id: str, kind: str) -> Self: - return super().__new__(cls, id) + return super().__new__(cls, '#'.join([kind.upper(), id])) def __init__(self, id: str, kind: str) -> None: # __init__ is used to store the parameters for later reference. @@ -86,7 +86,11 @@ def enroll( 'sk': '0', 'create_date': now_, 'metadata__tenant_id': tenant_id, - 'metadata__related_ids': {tenant_id, user.id} | related_ids, + 'metadata__related_ids': { + RelatedId(tenant_id, 'org'), + RelatedId(user.id, 'user'), # type: ignore + } + | related_ids, **enrollment.model_dump(), }, ) @@ -143,7 +147,7 @@ def enroll( 'id': enrollment.id, 'sk': f'related_ids#{kind}', 'create_date': now_, - f'{kind}_id': related_id, + f'{kind}_id': related_id.id, } ) diff --git a/http-api/tests/routes/test_enrollments.py b/http-api/tests/routes/test_enrollments.py index fd6b6e4..2da4450 100644 --- a/http-api/tests/routes/test_enrollments.py +++ b/http-api/tests/routes/test_enrollments.py @@ -79,9 +79,16 @@ def test_enroll( ) + SortKey('0') + SortKey('parent_vacancy', path_spec='vacancy') - + SortKey('related_ids#order', path_spec='order_id'), + + SortKey('related_ids#order', path_spec='order_id') + + SortKey('related_ids#user', path_spec='user_id'), ) + assert enrollment['metadata__related_ids'] == { + 'USER#9a41e867-55e1-4573-bd27-7b5d1d1bcfde', + 'ORG#cJtK9SsnJhKPyxESe7g3DG', + 'ORDER#3CNrFB9dy2RLit2pdeUWy4', + } + assert succ['output']['id'] == '8c9b55ef-e988-43ee-b2da-8594850605d7' assert enrollment['related_ids#order'] == '3CNrFB9dy2RLit2pdeUWy4' assert enrollment['parent_vacancy'] == {