Skip to content

Commit 13fe03b

Browse files
committed
feat: reduce filter on creation
1 parent fe46940 commit 13fe03b

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

src/stac_auth_proxy/utils/filters.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,33 @@
77
from cql2 import Expr
88

99

10-
def append_qs_filter(qs: str, filter: Expr, filter_lang: Optional[str] = None) -> bytes:
10+
def append_qs_filter(
11+
qs: str, cql2_filter: Expr, filter_lang: Optional[str] = None
12+
) -> bytes:
1113
"""Insert a filter expression into a query string. If a filter already exists, combine them."""
1214
qs_dict = {k: v[0] for k, v in parse_qs(qs).items()}
1315
new_qs_dict = append_body_filter(
14-
qs_dict, filter, filter_lang or qs_dict.get("filter-lang", "cql2-text")
16+
qs_dict, cql2_filter, filter_lang or qs_dict.get("filter-lang", "cql2-text")
1517
)
1618
return dict_to_query_string(new_qs_dict).encode("utf-8")
1719

1820

1921
def append_body_filter(
20-
body: dict, filter: Expr, filter_lang: Optional[str] = None
22+
body: dict, cql2_filter: Expr, filter_lang: Optional[str] = None
2123
) -> dict:
2224
"""Insert a filter expression into a request body. If a filter already exists, combine them."""
2325
cur_filter = body.get("filter")
2426
filter_lang = filter_lang or body.get("filter-lang", "cql2-json")
2527
if cur_filter:
26-
filter = filter + Expr(cur_filter)
28+
cql2_filter = cql2_filter + Expr(cur_filter)
29+
cql2_filter = cql2_filter.reduce()
2730
return {
2831
**body,
29-
"filter": filter.to_text() if filter_lang == "cql2-text" else filter.to_json(),
32+
"filter": (
33+
cql2_filter.to_text()
34+
if filter_lang == "cql2-text"
35+
else cql2_filter.to_json()
36+
),
3037
"filter-lang": filter_lang,
3138
}
3239

tests/test_filters_jinja2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
id="simple_templated",
2222
),
2323
pytest.param(
24-
"(private = true)",
24+
"(private = true) AND true",
2525
"(private = true)",
2626
"(private = true)",
2727
id="complex_not_templated",

0 commit comments

Comments
 (0)