BUG FIX: Fix trailing AND in edge_search_filter_query_constructor Cypher query (#541)

Fix trailing AND in edge_search_filter_query_constructor Cypher query

Corrected the edge_search_filter_query_constructor function to prevent
trailing AND operators in generated Cypher queries, which caused
Neo.ClientError.Statement.SyntaxError. Changed condition from
`j != len(and_filter_query) - 1` to `j != len(and_filters) - 1` for
valid_at, invalid_at, created_at, and expired_at filter blocks. Also
fixed outer loop condition to use `len(filters.<field>)` instead of
`len(or_list)`. Ensures valid Cypher syntax for single DateFilter cases.

Co-authored-by: TheEpTic <326774+TheEpTic@users.noreply.github.com>
This commit is contained in:
TheEpTic 2025-05-29 17:55:16 +01:00 committed by GitHub
parent 2fe5902c95
commit 735b020624
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -95,12 +95,12 @@ def edge_search_filter_query_constructor(
and_filter_query = ''
for j, and_filter in enumerate(and_filters):
and_filter_query += and_filter
if j != len(and_filter_query) - 1:
if j != len(and_filters) - 1:
and_filter_query += ' AND '
valid_at_filter += and_filter_query
if i == len(or_list) - 1:
if i == len(filters.valid_at) - 1:
valid_at_filter += ')'
else:
valid_at_filter += ' OR '
@ -120,12 +120,12 @@ def edge_search_filter_query_constructor(
and_filter_query = ''
for j, and_filter in enumerate(and_filters):
and_filter_query += and_filter
if j != len(and_filter_query) - 1:
if j != len(and_filters) - 1:
and_filter_query += ' AND '
invalid_at_filter += and_filter_query
if i == len(or_list) - 1:
if i == len(filters.invalid_at) - 1:
invalid_at_filter += ')'
else:
invalid_at_filter += ' OR '
@ -145,12 +145,12 @@ def edge_search_filter_query_constructor(
and_filter_query = ''
for j, and_filter in enumerate(and_filters):
and_filter_query += and_filter
if j != len(and_filter_query) - 1:
if j != len(and_filters) - 1:
and_filter_query += ' AND '
created_at_filter += and_filter_query
if i == len(or_list) - 1:
if i == len(filters.created_at) - 1:
created_at_filter += ')'
else:
created_at_filter += ' OR '
@ -170,12 +170,12 @@ def edge_search_filter_query_constructor(
and_filter_query = ''
for j, and_filter in enumerate(and_filters):
and_filter_query += and_filter
if j != len(and_filter_query) - 1:
if j != len(and_filters) - 1:
and_filter_query += ' AND '
expired_at_filter += and_filter_query
if i == len(or_list) - 1:
if i == len(filters.expired_at) - 1:
expired_at_filter += ')'
else:
expired_at_filter += ' OR '