From a2d8050c0961c4fbd5c6175834210260a809a8bf Mon Sep 17 00:00:00 2001 From: Keiran Price Date: Mon, 29 Jul 2019 08:44:57 +0100 Subject: [PATCH] Create QueryFilterFactory --- common/database_helpers.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/common/database_helpers.py b/common/database_helpers.py index d7accffb..4d0e26d4 100644 --- a/common/database_helpers.py +++ b/common/database_helpers.py @@ -169,6 +169,28 @@ def apply_filter(self, query): query.include_related_entities = True +class QueryFilterFactory(object): + @staticmethod + def get_query_filter(filter): + """ + Given a filter return a matching Query filter object + :param filter: dict - The filter to create the QueryFilter for + :return: The QueryFilter object created + """ + filter_name = list(filter)[0].lower() + if filter_name == "where": + return WhereFilter(list(filter["where"])[0], filter["where"][list(filter["where"])[0]]) + elif filter_name == "order": + return OrderFilter(filter["order"].split(" ")[0], filter["order"].split(" ")[1]) + elif filter_name == "skip": + return SkipFilter(filter["skip"]) + elif filter_name == "limit": + return LimitFilter(filter["limit"]) + elif filter_name == "include": + return IncludeFilter(filter) + else: + raise BadFilterError(f" Bad filter: {filter}") + def insert_row_into_table(row): """ Insert the given row into its table