Skip to content

Commit c76505c

Browse files
committed
chore: handle searchable
1 parent 5498fee commit c76505c

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

src/datasource_rpc/forestadmin/datasource_rpc/datasource.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ def create_collection(self, collection_name, collection_schema):
7070
collection.add_rpc_action(action_name, action_schema)
7171

7272
collection._schema["charts"] = {name: None for name in collection_schema["charts"]}
73+
collection._schema["searchable"] = collection_schema["searchable"]
74+
collection._schema["countable"] = collection_schema["countable"]
7375
collection.add_segments(collection_schema["segments"])
7476

7577
self.add_collection(collection)

src/datasource_toolkit/forestadmin/datasource_toolkit/datasource_customizer/collection_customizer.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,13 @@ async def _disable_count():
550550
self.stack.queue_customization(_disable_count)
551551
return self
552552

553+
def bypass_search(self) -> Self:
554+
async def _bypass_search():
555+
cast(SearchCollectionDecorator, self.stack.search.get_collection(self.collection_name)).bypass_search()
556+
557+
self.stack.queue_customization(_bypass_search)
558+
return self
559+
553560
def replace_search(self, definition: SearchDefinition) -> Self:
554561
"""Replace the behavior of the search bar
555562
Args:

src/datasource_toolkit/forestadmin/datasource_toolkit/decorators/search/collections.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,16 @@ def __init__(self, collection: Collection, datasource: Datasource[BoundCollectio
3333
super().__init__(collection, datasource)
3434
self._replacer: SearchDefinition = None
3535
self._searchable = len(self._get_searchable_fields(self.child_collection, False)) > 0
36+
self._bypass_searchable = False
3637

3738
def disable_search(self):
3839
self._searchable = False
3940
self.mark_schema_as_dirty()
4041

42+
def bypass_search(self):
43+
self._bypass_searchable = True
44+
self.mark_schema_as_dirty()
45+
4146
def replace_search(self, replacer: SearchDefinition):
4247
self._replacer = replacer
4348
self._searchable = True
@@ -46,7 +51,7 @@ def replace_search(self, replacer: SearchDefinition):
4651
def _refine_schema(self, sub_schema: CollectionSchema) -> CollectionSchema:
4752
return {
4853
**sub_schema,
49-
"searchable": self._searchable,
54+
"searchable": self._searchable if self._bypass_searchable is False else sub_schema["searchable"],
5055
}
5156

5257
def _default_replacer(self, search: str, extended: bool) -> ConditionTree:
@@ -58,7 +63,7 @@ def _default_replacer(self, search: str, extended: bool) -> ConditionTree:
5863
async def _refine_filter(
5964
self, caller: User, _filter: Union[Optional[PaginatedFilter], Optional[Filter]]
6065
) -> Optional[Union[PaginatedFilter, Filter]]:
61-
if _filter is None:
66+
if _filter is None or self._bypass_searchable:
6267
return _filter
6368

6469
# Search string is not significant

0 commit comments

Comments
 (0)