@@ -31,7 +31,7 @@ def get_parsed_search_tsquery(search_query: str) -> str:
3131 return func .plainto_tsquery ("english" , unaccent (parsed_query ))
3232
3333 @staticmethod
34- def add_search_query_filters (query , search_query , data_type , feed_id , status ) -> Query :
34+ def add_search_query_filters (query , search_query , data_type , feed_id , status , is_official ) -> Query :
3535 """
3636 Add filters to the search query.
3737 Filter values are trimmed and converted to lowercase.
@@ -53,22 +53,32 @@ def add_search_query_filters(query, search_query, data_type, feed_id, status) ->
5353 status_list = [s .strip ().lower () for s in status [0 ].split ("," ) if s ]
5454 if status_list :
5555 query = query .where (t_feedsearch .c .status .in_ ([s .strip ().lower () for s in status_list ]))
56+ if is_official is not None and is_official :
57+ query = query .where (t_feedsearch .c .official == is_official )
5658 if search_query and len (search_query .strip ()) > 0 :
5759 query = query .filter (
5860 t_feedsearch .c .document .op ("@@" )(SearchApiImpl .get_parsed_search_tsquery (search_query ))
5961 )
6062 return query
6163
6264 @staticmethod
63- def create_count_search_query (status : List [str ], feed_id : str , data_type : str , search_query : str ) -> Query :
65+ def create_count_search_query (
66+ status : List [str ],
67+ feed_id : str ,
68+ data_type : str ,
69+ is_official : bool ,
70+ search_query : str ,
71+ ) -> Query :
6472 """
6573 Create a search query for the database.
6674 """
6775 query = select (func .count (t_feedsearch .c .feed_id ))
68- return SearchApiImpl .add_search_query_filters (query , search_query , data_type , feed_id , status )
76+ return SearchApiImpl .add_search_query_filters (query , search_query , data_type , feed_id , status , is_official )
6977
7078 @staticmethod
71- def create_search_query (status : List [str ], feed_id : str , data_type : str , search_query : str ) -> Query :
79+ def create_search_query (
80+ status : List [str ], feed_id : str , data_type : str , is_official : bool , search_query : str
81+ ) -> Query :
7282 """
7383 Create a search query for the database.
7484 """
@@ -80,7 +90,7 @@ def create_search_query(status: List[str], feed_id: str, data_type: str, search_
8090 rank_expression ,
8191 * feed_search_columns ,
8292 )
83- query = SearchApiImpl .add_search_query_filters (query , search_query , data_type , feed_id , status )
93+ query = SearchApiImpl .add_search_query_filters (query , search_query , data_type , feed_id , status , is_official )
8494 return query .order_by (rank_expression .desc ())
8595
8696 def search_feeds (
@@ -90,17 +100,18 @@ def search_feeds(
90100 status : List [str ],
91101 feed_id : str ,
92102 data_type : str ,
103+ is_official : bool ,
93104 search_query : str ,
94105 ) -> SearchFeeds200Response :
95106 """Search feeds using full-text search on feed, location and provider's information."""
96- query = self .create_search_query (status , feed_id , data_type , search_query )
107+ query = self .create_search_query (status , feed_id , data_type , is_official , search_query )
97108 feed_rows = Database ().select (
98109 query = query ,
99110 limit = limit ,
100111 offset = offset ,
101112 )
102113 feed_total_count = Database ().select (
103- query = self .create_count_search_query (status , feed_id , data_type , search_query ),
114+ query = self .create_count_search_query (status , feed_id , data_type , is_official , search_query ),
104115 )
105116 if feed_rows is None or feed_total_count is None :
106117 return SearchFeeds200Response (
0 commit comments