Trying to fix filters

This commit is contained in:
Cyber MacGeddon 2025-09-03 23:03:43 +01:00
parent 7c7f07a92b
commit 30a9bcd6c1

View file

@ -35,8 +35,8 @@ class IntFilter:
gte: Optional[int] = None gte: Optional[int] = None
lt: Optional[int] = None lt: Optional[int] = None
lte: Optional[int] = None lte: Optional[int] = None
in_: Optional[List[int]] = strawberry.field(name="in") in_: Optional[List[int]] = strawberry.field(name="in", default=None)
not_: Optional[int] = strawberry.field(name="not") not_: Optional[int] = strawberry.field(name="not", default=None)
not_in: Optional[List[int]] = None not_in: Optional[List[int]] = None
@strawberry.input @strawberry.input
@ -45,8 +45,8 @@ class StringFilter:
contains: Optional[str] = None contains: Optional[str] = None
startsWith: Optional[str] = None startsWith: Optional[str] = None
endsWith: Optional[str] = None endsWith: Optional[str] = None
in_: Optional[List[str]] = strawberry.field(name="in") in_: Optional[List[str]] = strawberry.field(name="in", default=None)
not_: Optional[str] = strawberry.field(name="not") not_: Optional[str] = strawberry.field(name="not", default=None)
not_in: Optional[List[str]] = None not_in: Optional[List[str]] = None
@strawberry.input @strawberry.input
@ -56,8 +56,8 @@ class FloatFilter:
gte: Optional[float] = None gte: Optional[float] = None
lt: Optional[float] = None lt: Optional[float] = None
lte: Optional[float] = None lte: Optional[float] = None
in_: Optional[List[float]] = strawberry.field(name="in") in_: Optional[List[float]] = strawberry.field(name="in", default=None)
not_: Optional[float] = strawberry.field(name="not") not_: Optional[float] = strawberry.field(name="not", default=None)
not_in: Optional[List[float]] = None not_in: Optional[List[float]] = None
@ -287,15 +287,27 @@ class Processor(FlowProcessor):
annotations = {} annotations = {}
defaults = {} defaults = {}
logger.info(f"Creating filter type {filter_type_name} for schema {schema_name}")
for field in row_schema.fields: for field in row_schema.fields:
if field.indexed or field.primary: logger.info(f"Field {field.name}: type={field.type}, indexed={field.indexed}, primary={field.primary}")
if field.type == "integer":
annotations[field.name] = Optional[IntFilter] # Allow filtering on any field for now, not just indexed/primary
elif field.type == "float": # if field.indexed or field.primary:
annotations[field.name] = Optional[FloatFilter] if field.type == "integer":
elif field.type == "string": annotations[field.name] = Optional[IntFilter]
annotations[field.name] = Optional[StringFilter]
defaults[field.name] = None defaults[field.name] = None
logger.info(f"Added IntFilter for {field.name}")
elif field.type == "float":
annotations[field.name] = Optional[FloatFilter]
defaults[field.name] = None
logger.info(f"Added FloatFilter for {field.name}")
elif field.type == "string":
annotations[field.name] = Optional[StringFilter]
defaults[field.name] = None
logger.info(f"Added StringFilter for {field.name}")
logger.info(f"Filter type {filter_type_name} will have fields: {list(annotations.keys())}")
# Create the class dynamically # Create the class dynamically
FilterType = type( FilterType = type(