From e7ccc06698b353d5f74955391934040e47b6b3c6 Mon Sep 17 00:00:00 2001 From: Jackson Goerner <37640160+glipR@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:08:39 +1100 Subject: [PATCH] Change databuilder search data extractors to publish `name` in user document. Signed-off-by: Jackson Goerner --- .../databuilder/extractor/atlas_search_data_extractor.py | 1 + .../databuilder/extractor/mysql_search_data_extractor.py | 1 + .../databuilder/extractor/neo4j_search_data_extractor.py | 2 +- .../databuilder/extractor/neptune_search_data_extractor.py | 1 + databuilder/databuilder/models/user_elasticsearch_document.py | 2 ++ 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/databuilder/databuilder/extractor/atlas_search_data_extractor.py b/databuilder/databuilder/extractor/atlas_search_data_extractor.py index 5c8f30399..2821c624d 100644 --- a/databuilder/databuilder/extractor/atlas_search_data_extractor.py +++ b/databuilder/databuilder/extractor/atlas_search_data_extractor.py @@ -204,6 +204,7 @@ class AtlasSearchDataExtractor(Extractor): lambda x: AtlasSearchDataExtractorHelpers.get_badges_from_classifications(x), []) ], 'User': [ + ('name', 'attributes.full_name', None, ''), ('email', 'attributes.qualifiedName', None, ''), ('first_name', 'attributes.first_name', None, ''), ('last_name', 'attributes.last_name', None, ''), diff --git a/databuilder/databuilder/extractor/mysql_search_data_extractor.py b/databuilder/databuilder/extractor/mysql_search_data_extractor.py index d98138a63..c1d376a7d 100644 --- a/databuilder/databuilder/extractor/mysql_search_data_extractor.py +++ b/databuilder/databuilder/extractor/mysql_search_data_extractor.py @@ -426,6 +426,7 @@ def _user_search(session: Session, published_tag: str, limit: int) -> List[Dict] manager_email = user.manager.email if user.manager else '' user_result = dict(email=user.email, + name=user.full_name, first_name=user.first_name, last_name=user.last_name, full_name=user.full_name, diff --git a/databuilder/databuilder/extractor/neo4j_search_data_extractor.py b/databuilder/databuilder/extractor/neo4j_search_data_extractor.py index 2e0243320..84d06928b 100644 --- a/databuilder/databuilder/extractor/neo4j_search_data_extractor.py +++ b/databuilder/databuilder/extractor/neo4j_search_data_extractor.py @@ -73,7 +73,7 @@ class Neo4jSearchDataExtractor(Extractor): where user.full_name is not null return user.email as email, user.first_name as first_name, user.last_name as last_name, user.full_name as full_name, user.github_username as github_username, user.team_name as team_name, - user.employee_type as employee_type, manager.email as manager_email, + user.employee_type as employee_type, manager.email as manager_email, user.full_name as name, user.slack_id as slack_id, user.is_active as is_active, user.role_name as role_name, REDUCE(sum_r = 0, r in COLLECT(DISTINCT read)| sum_r + r.read_count) AS total_read, count(distinct b) as total_own, diff --git a/databuilder/databuilder/extractor/neptune_search_data_extractor.py b/databuilder/databuilder/extractor/neptune_search_data_extractor.py index ef8a1edbf..1e356eb81 100644 --- a/databuilder/databuilder/extractor/neptune_search_data_extractor.py +++ b/databuilder/databuilder/extractor/neptune_search_data_extractor.py @@ -121,6 +121,7 @@ def _user_search_query(graph: GraphTraversalSource, tag_filter: str) -> List[Dic 'total_own', 'total_follow' ) + traversal = traversal.by('full_name') # name traversal = traversal.by('email') # email traversal = traversal.by('first_name') # first_name traversal = traversal.by('last_name') # last_name diff --git a/databuilder/databuilder/models/user_elasticsearch_document.py b/databuilder/databuilder/models/user_elasticsearch_document.py index 65b35cea2..01c79d7f8 100644 --- a/databuilder/databuilder/models/user_elasticsearch_document.py +++ b/databuilder/databuilder/models/user_elasticsearch_document.py @@ -10,6 +10,7 @@ class UserESDocument(ElasticsearchDocument): """ def __init__(self, + name: str, email: str, first_name: str, last_name: str, @@ -25,6 +26,7 @@ def __init__(self, total_own: int, total_follow: int, ) -> None: + self.name = name self.email = email self.first_name = first_name self.last_name = last_name