Преглед изворни кода

HUE-9492 [query browser] Text search, date filtering and pagination

ayush.goyal пре 5 година
родитељ
комит
312d93fc5e
1 измењених фајлова са 21 додато и 8 уклоњено
  1. 21 8
      apps/jobbrowser/src/jobbrowser/apis/hive_query_api.py

+ 21 - 8
apps/jobbrowser/src/jobbrowser/apis/hive_query_api.py

@@ -45,7 +45,7 @@ class HiveQueryApi(Api):
     self.api = HiveQueryClient()
 
   def apps(self, filters):
-    queries = self.api.get_queries(limit=100)
+    queries = self.api.get_queries(filters)
 
     apps = {
       "apps": {
@@ -88,9 +88,9 @@ class HiveQueryApi(Api):
           for query in queries
         ],
         "meta": {
-            "limit": 100,
-            "offset": 0,
-            "size": self.api.get_query_count()
+            "limit": filters['limit'],
+            "offset": filters['offset'],
+            "size": self.api.get_query_count(filters)
           }
       }
     }
@@ -140,11 +140,24 @@ class HiveQueryApi(Api):
 
 class HiveQueryClient():
 
-  def get_query_count(self):
-    return HiveQuery.objects.using('query').count()
+  def _get_queries(self, filters):
+    queries = HiveQuery.objects.using('query').order_by('-id')
+    queries = queries.filter(start_time__gte = filters['startTime'], end_time__lte = filters['endTime'])
+    if filters['text']:
+      queries = queries.filter(query__icontains = filters['text'])
 
-  def get_queries(self, limit=100):
-    return HiveQuery.objects.using('query').order_by('-id')[:limit]
+    return queries
+
+  def get_query_count(self, filters):
+    filtered_query_list = self._get_queries(filters)
+
+    return filtered_query_list.count()
+
+  def get_queries(self, filters):
+    filtered_query_list = self._get_queries(filters)
+    paginated_query_list  = filtered_query_list[filters['offset']:filters['offset'] + filters['limit']]
+
+    return paginated_query_list
 
   def get_query(self, query_id):
     return HiveQuery.objects.using('query').get(query_id=query_id)