Browse Source

HUE-4932 [metadata] Adding API to suggest

Romain Rigaux 9 năm trước cách đây
mục cha
commit
a1bcf4d

+ 8 - 0
apps/metastore/src/metastore/templates/metastore.mako

@@ -1180,6 +1180,14 @@ ${ sqlContextPopover.sqlContextPopover() }
     });
   }
 
+  function suggest() {
+    $.post("${ url('metadata:suggest') }", { // '/metadata/api/navigator/suggest/'
+      prefix: 'blah'
+    }, function(data) {
+      console.log(JSON.stringify(data));
+    });
+  }
+
   function pieChartDataTransformer(rawDatum) {
     var _data = [];
     $(rawDatum.counts).each(function (cnt, item) {

+ 15 - 0
desktop/libs/metadata/src/metadata/navigator_api.py

@@ -150,6 +150,21 @@ def find_entity(request):
   return JsonResponse(response)
 
 
+@error_handler
+def suggest(request):
+  response = {'status': -1}
+
+  api = NavigatorApi()
+  prefix = request.POST.get('prefix')
+
+  suggest = api.suggest(prefix)
+
+  response['suggest'] = suggest
+  response['status'] = 0
+
+  return JsonResponse(response)
+
+
 @error_handler
 def get_entity(request):
   response = {'status': -1}

+ 9 - 1
desktop/libs/metadata/src/metadata/navigator_client.py

@@ -132,7 +132,6 @@ class NavigatorApi(object):
       if firstClassEntitiesOnly is not None:
         body['firstClassEntitiesOnly'] = firstClassEntitiesOnly
 
-      print json.dumps(body)
       response = self._root.post('interactive/entities?limit=%(limit)s&offset=%(offset)s' % pagination, data=json.dumps(body), contenttype=_JSON_CONTENT_TYPE)
 
       return response
@@ -142,6 +141,15 @@ class NavigatorApi(object):
       raise NavigatorApiException(msg)
 
 
+  def suggest(self, prefix=None):
+    try:
+      return self._root.get('interactive/suggestions?query=%s' % (prefix or '*'))
+    except RestException, e:
+      msg = 'Failed to search for entities with search query: %s' % prefix
+      LOG.exception(msg)
+      raise NavigatorApiException(msg)
+
+
   def find_entity(self, source_type, type, name, **filters):
     """
     GET /api/v3/entities?query=((sourceType:<source_type>)AND(type:<type>)AND(originalName:<name>))

+ 1 - 0
desktop/libs/metadata/src/metadata/urls.py

@@ -26,6 +26,7 @@ urlpatterns = patterns('metadata.navigator_api',
   url(r'^api/navigator/add_tags/?$', 'add_tags', name='add_tags'),
   url(r'^api/navigator/delete_tags/?$', 'delete_tags', name='delete_tags'),
   url(r'^api/navigator/list_tags/?$', 'list_tags', name='list_tags'),
+  url(r'^api/navigator/suggest/?$', 'suggest', name='suggest'),
   url(r'^api/navigator/update_properties/?$', 'update_properties', name='update_properties'),
   url(r'^api/navigator/delete_properties/?$', 'delete_properties', name='delete_properties'),
   url(r'^api/navigator/lineage/?$', 'get_lineage', name='get_lineage'),