From eebf29af4826c16ef5b13cdc9d58cc500d2a6536 Mon Sep 17 00:00:00 2001 From: Keiran Price Date: Wed, 11 Sep 2019 09:52:13 +0100 Subject: [PATCH] #41: Extract include into function --- common/database_helpers.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/common/database_helpers.py b/common/database_helpers.py index b530d6ee..cbdb67c6 100644 --- a/common/database_helpers.py +++ b/common/database_helpers.py @@ -347,14 +347,25 @@ def get_rows_by_filter(table, filters): filter_handler.apply_filters(query) results = query.get_all_results() if query.include_related_entities: - for query_filter in filters: - if list(query_filter)[0].lower() == "include": - return list(map(lambda x: x.to_nested_dict(query_filter["include"]), results)) + return _get_results_with_include(filters, results) return list(map(lambda x: x.to_dict(), results)) finally: query.session.close() +def _get_results_with_include(filters, results): + """ + Given a list of entities and a list of filters, use the include filter to nest the included entities requested in + the include filter given + :param filters: The list of filters + :param results: The list of entities + :return: A list of nested dictionaries representing the entity results + """ + for query_filter in filters: + if list(query_filter)[0].lower() == "include": + return [x.to_nested_dict(query_filter["include"]) for x in results] + + def get_first_filtered_row(table, filters): """ returns the first row that matches a given filter, in a given table