Skip to content

Commit ef9c5e9

Browse files
committed
make predicate match
1 parent 47ff414 commit ef9c5e9

File tree

1 file changed

+16
-7
lines changed
  • store/backend/neurostore/resources

1 file changed

+16
-7
lines changed

store/backend/neurostore/resources/data.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -966,14 +966,23 @@ def view_search(self, q, args):
966966
val.strip() for val in value.split("|") if val.strip()
967967
]
968968
if modality_values:
969-
pipeline_query = pipeline_query.filter(
970-
sae.or_(
971-
*[
972-
PipelineStudyResultAlias.result_data["Modality"]
973-
.contains([modality_value])
974-
for modality_value in modality_values
975-
]
969+
modality_field = PipelineStudyResultAlias.result_data.op("->")(
970+
sa.literal_column("'Modality'")
971+
)
972+
modality_clauses = []
973+
for idx, modality_value in enumerate(modality_values):
974+
param_name = (
975+
f"modality_filter_{pipeline_name}_{idx}"
976976
)
977+
modality_clauses.append(
978+
modality_field.op("@>")(
979+
sa.func.jsonb_build_array(
980+
sa.bindparam(param_name, modality_value)
981+
)
982+
)
983+
)
984+
pipeline_query = pipeline_query.filter(
985+
sae.or_(*modality_clauses)
977986
)
978987
pipeline_subqueries.append(pipeline_query.subquery())
979988
continue

0 commit comments

Comments
 (0)