mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-09 20:05:20 -05:00
fix: Case Insensitive Query Filters (#5162)
This commit is contained in:
@@ -180,6 +180,9 @@ class QueryFilterBuilderComponent:
|
||||
if v is None:
|
||||
continue
|
||||
|
||||
if isinstance(model_attr_type, sqltypes.String):
|
||||
sanitized_values[i] = v.lower()
|
||||
|
||||
if self.relationship is RelationalKeyword.LIKE or self.relationship is RelationalKeyword.NOT_LIKE:
|
||||
if not isinstance(model_attr_type, sqltypes.String):
|
||||
raise ValueError(
|
||||
@@ -336,6 +339,9 @@ class QueryFilterBuilder:
|
||||
def _get_filter_element(
|
||||
component: QueryFilterBuilderComponent, model, model_attr, model_attr_type
|
||||
) -> sa.ColumnElement:
|
||||
if isinstance(model_attr_type, sqltypes.String):
|
||||
model_attr = sa.func.lower(model_attr)
|
||||
|
||||
# Keywords
|
||||
if component.relationship is RelationalKeyword.IS:
|
||||
element = model_attr.is_(component.validate(model_attr_type))
|
||||
@@ -351,9 +357,9 @@ class QueryFilterBuilder:
|
||||
for v in component.validate(model_attr_type):
|
||||
element = sa.and_(element, primary_model_attr.any(model_attr == v))
|
||||
elif component.relationship is RelationalKeyword.LIKE:
|
||||
element = model_attr.like(component.validate(model_attr_type))
|
||||
element = model_attr.ilike(component.validate(model_attr_type))
|
||||
elif component.relationship is RelationalKeyword.NOT_LIKE:
|
||||
element = model_attr.not_like(component.validate(model_attr_type))
|
||||
element = model_attr.not_ilike(component.validate(model_attr_type))
|
||||
|
||||
# Operators
|
||||
elif component.relationship is RelationalOperator.EQ:
|
||||
|
||||
Reference in New Issue
Block a user