Browse Source

feat(discover) Allow saved queries to be filtered by version (#15610)

Enable saved queries to be filtered by their schema version. We don't
yet have values in this column but I'll be fixing that soon and there
are no consumers of this version filter yet.
Mark Story 5 years ago
parent
commit
84bdce5ea0

+ 3 - 0
src/sentry/discover/endpoints/discover_saved_queries.py

@@ -39,6 +39,9 @@ class DiscoverSavedQueriesEndpoint(OrganizationEndpoint):
                 if key == "name" or key == "query":
                     value = " ".join(value)
                     queryset = queryset.filter(name__icontains=value)
+                elif key == "version":
+                    value = " ".join(value)
+                    queryset = queryset.filter(version=value)
                 else:
                     queryset = queryset.none()
 

+ 16 - 1
tests/snuba/api/endpoints/test_discover_saved_queries.py

@@ -19,7 +19,7 @@ class DiscoverSavedQueryBase(APITestCase, SnubaTestCase):
         query = {"fields": ["test"], "conditions": [], "limit": 10}
 
         model = DiscoverSavedQuery.objects.create(
-            organization=self.org, created_by=self.user, name="Test query", query=query
+            organization=self.org, created_by=self.user, name="Test query", query=query, version=1
         )
 
         model.set_projects(self.project_ids)
@@ -41,6 +41,21 @@ class DiscoverSavedQueriesTest(DiscoverSavedQueryBase):
         assert response.data[0]["conditions"] == []
         assert response.data[0]["limit"] == 10
 
+    def test_get_version_filter(self):
+        url = reverse("sentry-api-0-discover-saved-queries", args=[self.org.slug])
+        with self.feature(self.feature_name):
+            response = self.client.get(url, format="json", data={"query": "version:1"})
+
+        assert response.status_code == 200, response.content
+        assert len(response.data) == 1
+        assert response.data[0]["name"] == "Test query"
+
+        with self.feature(self.feature_name):
+            response = self.client.get(url, format="json", data={"query": "version:2"})
+
+        assert response.status_code == 200, response.content
+        assert len(response.data) == 0
+
     def test_get_name_filter(self):
         url = reverse("sentry-api-0-discover-saved-queries", args=[self.org.slug])
         with self.feature(self.feature_name):