From 608e2f10c00506de8785e6cd92e3f569ae88883d Mon Sep 17 00:00:00 2001 From: Logan Williams Date: Fri, 31 Mar 2023 09:55:57 +0200 Subject: [PATCH] Add support for fuzzy matching comparisons --- api/api.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/api/api.py b/api/api.py index 80b4455..e34086c 100644 --- a/api/api.py +++ b/api/api.py @@ -215,6 +215,19 @@ def make_filter_query(filter): if 'value' not in subfilter or subfilter['value'] == '': filter_query = sql.SQL("{filter_query} ({parameter} {comparison})").format(filter_query=filter_query, parameter=parameter, comparison=sql.SQL(subfilter['comparison'])) else: + if subfilter['comparison'] == 'starts with': + subfilter['value'] = f"{subfilter['value']}%" + subfilter['comparison'] = 'ILIKE' + elif subfilter['comparison'] == 'ends with': + subfilter['value'] = f"%{subfilter['value']}" + subfilter['comparison'] = 'ILIKE' + elif subfilter['comparison'] == 'contains': + subfilter['value'] = f"%{subfilter['value']}%" + subfilter['comparison'] = 'ILIKE' + elif subfilter['comparison'] == 'does not contain': + subfilter['value'] = f"%{subfilter['value']}%" + subfilter['comparison'] = 'NOT ILIKE' + filter_query = sql.SQL("{filter_query} ({parameter} {comparison} {value})").format(filter_query=filter_query, parameter=parameter, comparison=sql.SQL(subfilter['comparison']), value=sql.Literal(subfilter['value'])) if i != len(filter['filters']) - 1: