update related ids

This commit is contained in:
2025-06-04 10:23:48 -03:00
parent c3e6ed4a50
commit 3e44761e69
3 changed files with 16 additions and 5 deletions

View File

@@ -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. O gestor responsável pela ação também é relacionado à compra, com base no email presente na compra.
```json ```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": "metadata#tenant", "tenant_id": "100"}
{"id": "10", "sk": "related_ids#org", "org_id": "100"} {"id": "10", "sk": "related_ids#org", "org_id": "100"}
{"id": "10", "sk": "related_ids#user", "user_id": "123"} {"id": "10", "sk": "related_ids#user", "user_id": "123"}

View File

@@ -18,7 +18,7 @@ DeduplicationWindow = TypedDict('DeduplicationWindow', {'offset_days': int})
class RelatedId(str): class RelatedId(str):
def __new__(cls, id: str, kind: str) -> Self: 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: def __init__(self, id: str, kind: str) -> None:
# __init__ is used to store the parameters for later reference. # __init__ is used to store the parameters for later reference.
@@ -86,7 +86,11 @@ def enroll(
'sk': '0', 'sk': '0',
'create_date': now_, 'create_date': now_,
'metadata__tenant_id': tenant_id, '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(), **enrollment.model_dump(),
}, },
) )
@@ -143,7 +147,7 @@ def enroll(
'id': enrollment.id, 'id': enrollment.id,
'sk': f'related_ids#{kind}', 'sk': f'related_ids#{kind}',
'create_date': now_, 'create_date': now_,
f'{kind}_id': related_id, f'{kind}_id': related_id.id,
} }
) )

View File

@@ -79,9 +79,16 @@ def test_enroll(
) )
+ SortKey('0') + SortKey('0')
+ SortKey('parent_vacancy', path_spec='vacancy') + 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 succ['output']['id'] == '8c9b55ef-e988-43ee-b2da-8594850605d7'
assert enrollment['related_ids#order'] == '3CNrFB9dy2RLit2pdeUWy4' assert enrollment['related_ids#order'] == '3CNrFB9dy2RLit2pdeUWy4'
assert enrollment['parent_vacancy'] == { assert enrollment['parent_vacancy'] == {