mirror of
https://github.com/d3vyce/fastapi-toolsets.git
synced 2026-04-16 14:46:24 +02:00
fix: coerce plain int values to enum member when filtering on IntEnum column (#231)
This commit is contained in:
@@ -347,6 +347,24 @@ def build_filter_by(
|
||||
filters.append(column.overlap(value))
|
||||
else:
|
||||
filters.append(column.any(value))
|
||||
elif isinstance(col_type, Enum):
|
||||
enum_class = col_type.enum_class
|
||||
if enum_class is not None and issubclass(enum_class, int):
|
||||
|
||||
def _coerce_int_enum(v: Any) -> Any:
|
||||
if isinstance(v, enum_class):
|
||||
return v
|
||||
return enum_class(int(v))
|
||||
|
||||
if isinstance(value, list):
|
||||
filters.append(column.in_([_coerce_int_enum(v) for v in value]))
|
||||
else:
|
||||
filters.append(column == _coerce_int_enum(value))
|
||||
else:
|
||||
if isinstance(value, list):
|
||||
filters.append(column.in_(value))
|
||||
else:
|
||||
filters.append(column == value)
|
||||
elif isinstance(col_type, _EQUALITY_TYPES):
|
||||
if isinstance(value, list):
|
||||
filters.append(column.in_(value))
|
||||
|
||||
Reference in New Issue
Block a user