Explorar el Código

HUE-9077 [ksql] List topics, tables, streams in the left assist

Romain hace 6 años
padre
commit
e3cb042671

+ 16 - 0
desktop/libs/kafka/src/kafka/ksql_client.py

@@ -78,6 +78,22 @@ class KSqlApi(object):
       raise KSqlApiException(e)
 
 
+  def show_topics(self):
+    try:
+      response = self.client.ksql('SHOW TOPICS')
+      return response[0]['topics']
+    except Exception as e:
+      raise KSqlApiException(e)
+
+
+  def show_streams(self):
+    try:
+      response = self.client.ksql('SHOW STREAMS')
+      return response[0]['streams']
+    except Exception as e:
+      raise KSqlApiException(e)
+
+
   def ksql(self, statement):
     response = self.client.ksql(statement)
     print(response)

+ 10 - 2
desktop/libs/notebook/src/notebook/connectors/ksql.py

@@ -85,9 +85,17 @@ class KSqlApi(Api):
 
     try:
       if database is None:
-        response['databases'] = ['default']
+        response['databases'] = ['tables', 'topics', 'streams']
       elif table is None:
-        response['tables_meta'] = self.db.show_tables()
+        if database == 'tables':
+          response['tables_meta'] = self.db.show_tables()
+        elif database == 'topics':
+          response['tables_meta'] = self.db.show_topics()
+        elif database == 'streams':
+          response['tables_meta'] = [
+            {'name': t['name'], 'type': t['type'], 'comment': 'Topic: %(topic)s Format: %(format)s' % t}
+            for t in self.db.show_streams()
+          ]
       else:
         response = {}
 

+ 1 - 1
tools/ace-editor/lib/ace/mode/ksql_highlight_rules.js

@@ -33,7 +33,7 @@ define(function (require, exports, module) {
     );
 
     var builtinFunctions = (
-        "ABS|ARRAYCONTAINS|CEIL|CONCAT|DATETOSTRING|ELT|EXTRACTJSONFIELD|FIELD|FLOOR|GEO_DISTANCE|IFNULL|LCASE|LEN|MASK|MASK_KEEP_LEFT|MASK_KEEP_RIGHT|MASK_LEFT|MASK_RIGHT|RANDOM|ROUND|SPLIT|STRINGTODATE|STRINGTOTIMESTAMP|SUBSTRING|TIMESTAMPTOSTRING|TRIM|UCASE|URL_DECODE_PARAM|URL_ENCODE_PARAM|URL_EXTRACT_FRAGMENT|URL_EXTRACT_HOST|URL_EXTRACT_PARAMETER|URL_EXTRACT_PATH|URL_EXTRACT_PORT|URL_EXTRACT_PROTOCOL|URL_EXTRACT_QUERY|COLLECT_LIST|COLLECT_SET|COUNT|HISTOGRAM|MAX|MIN|SUM|TOPK|TOPKDISTINCT|WindowStart|WindowEnd|"
+        "ABS|ARRAYCONTAINS|CEIL|CONCAT|DATETOSTRING|ELT|EXTRACTJSONFIELD|FIELD|FLOOR|GEO_DISTANCE|IFNULL|LCASE|LEN|MASK|MASK_KEEP_LEFT|MASK_KEEP_RIGHT|MASK_LEFT|MASK_RIGHT|RANDOM|ROUND|SPLIT|STRINGTODATE|STRINGTOTIMESTAMP|SUBSTRING|TIMESTAMPTOSTRING|TRIM|UCASE|URL_DECODE_PARAM|URL_ENCODE_PARAM|URL_EXTRACT_FRAGMENT|URL_EXTRACT_HOST|URL_EXTRACT_PARAMETER|URL_EXTRACT_PATH|URL_EXTRACT_PORT|URL_EXTRACT_PROTOCOL|URL_EXTRACT_QUERY|COLLECT_LIST|COLLECT_SET|COUNT|HISTOGRAM|MAX|MIN|SUM|TOPK|TOPKDISTINCT|WindowStart|WindowEnd"
     );
 
     var dataTypes = (