diff --git a/app/lib_sql_search.py b/app/lib_sql_search.py index 06e585b..83f5aa6 100644 --- a/app/lib_sql_search.py +++ b/app/lib_sql_search.py @@ -248,10 +248,18 @@ def sql_search_qry_part( target_field = candidate_field # print(f"Search Trace: Mapping filter field '{f.field}' -> '{target_field}'", flush=True) else: - # If random doesn't exist, we must stick to the integer column - # but we'll need to resolve the string value to an integer elsewhere - # or rely on the user providing an integer for now. - pass + # Fallback: Resolve ID if random column is missing from view + try: + from app.lib_redis_helpers import redis_lookup_id_random + # Infer table name (e.g., 'event_id' -> 'event') + if target_field.endswith('_id') and target_field != 'id': + lookup_tbl = target_field[:-3] # remove '_id' + resolved_id = redis_lookup_id_random(record_id_random=f.value, table_name=lookup_tbl) + if resolved_id: + # Update the filter value to use the resolved integer + f.value = resolved_id + except Exception as e: + log.warning(f"Failed to resolve random ID for field {target_field}: {e}") if searchable_fields is not None and target_field not in searchable_fields: # Fallback check for original field just in case diff --git a/app/models/event_presenter_models.py b/app/models/event_presenter_models.py index fa90814..ce2081c 100644 --- a/app/models/event_presenter_models.py +++ b/app/models/event_presenter_models.py @@ -334,7 +334,7 @@ class Event_Presenter_Out_Base(BaseModel): data_json: Optional[Union[Json, None]] # For key value data. Careful with overwriting existing fields! cfg_json: Optional[Union[Json, None]] # Store per presenter config options like theme, language, etc - # file_count: Optional[int] + file_count: Optional[int] # General catchall for agreement or consent agree: Optional[bool]