diff --git a/superset/queries/saved_queries/api.py b/superset/queries/saved_queries/api.py index 09cb82ac22c..37e30841f3b 100644 --- a/superset/queries/saved_queries/api.py +++ b/superset/queries/saved_queries/api.py @@ -102,7 +102,7 @@ class SavedQueryRestApi(BaseSupersetModelRestApi): "changed_on_delta_humanized", ] - search_columns = ["id", "label"] + search_columns = ["id", "database", "label", "schema"] search_filters = { "id": [SavedQueryFavoriteFilter], "label": [SavedQueryAllTextFilter], diff --git a/tests/queries/saved_queries/api_tests.py b/tests/queries/saved_queries/api_tests.py index ecc13456af0..ace164baaee 100644 --- a/tests/queries/saved_queries/api_tests.py +++ b/tests/queries/saved_queries/api_tests.py @@ -214,6 +214,56 @@ class TestSavedQueryApi(SupersetTestCase): data = json.loads(rv.data.decode("utf-8")) assert data["count"] == len(all_queries) + @pytest.mark.usefixtures("create_saved_queries") + def test_get_list_filter_database_saved_query(self): + """ + Saved Query API: Test get list and database saved query + """ + example_db = get_example_database() + admin_user = self.get_user("admin") + + all_db_queries = ( + db.session.query(SavedQuery) + .filter(SavedQuery.db_id == example_db.id) + .filter(SavedQuery.created_by_fk == admin_user.id) + .all() + ) + + self.login(username="admin") + query_string = { + "filters": [{"col": "database", "opr": "rel_o_m", "value": example_db.id}], + } + uri = f"api/v1/saved_query/?q={prison.dumps(query_string)}" + rv = self.get_assert_metric(uri, "get_list") + assert rv.status_code == 200 + data = json.loads(rv.data.decode("utf-8")) + assert data["count"] == len(all_db_queries) + + @pytest.mark.usefixtures("create_saved_queries") + def test_get_list_filter_schema_saved_query(self): + """ + Saved Query API: Test get list and schema saved query + """ + schema_name = "schema1" + admin_user = self.get_user("admin") + + all_db_queries = ( + db.session.query(SavedQuery) + .filter(SavedQuery.schema == schema_name) + .filter(SavedQuery.created_by_fk == admin_user.id) + .all() + ) + + self.login(username="admin") + query_string = { + "filters": [{"col": "schema", "opr": "eq", "value": schema_name}], + } + uri = f"api/v1/saved_query/?q={prison.dumps(query_string)}" + rv = self.get_assert_metric(uri, "get_list") + assert rv.status_code == 200 + data = json.loads(rv.data.decode("utf-8")) + assert data["count"] == len(all_db_queries) + @pytest.mark.usefixtures("create_saved_queries") def test_get_list_custom_filter_schema_saved_query(self): """