Jelajahi Sumber

[api] Adding current SQL Scratchpad APIs

Romain Rigaux 4 tahun lalu
induk
melakukan
cd1b67536f

+ 54 - 1
desktop/core/src/desktop/api_public.py

@@ -22,7 +22,60 @@ from notebook import api as notebook_api
 
 @api_view(["POST"])
 def create_notebook(request):
-  return notebook_api.create_notebook(request)
+  django_request = request._request
+  return notebook_api.create_notebook(django_request)
+
+@api_view(["POST"])
+def create_session(request):
+  django_request = request._request
+  return notebook_api.create_session(django_request)
+
+@api_view(["POST"])
+def close_session(request):
+  django_request = request._request
+  return notebook_api.close_session(django_request)
+
+@api_view(["POST"])
+def execute(request, dialect=None):
+  django_request = request._request
+  return notebook_api.execute(django_request, dialect)
+
+@api_view(["POST"])
+def check_status(request):
+  django_request = request._request
+  return notebook_api.check_status(django_request)
+
+@api_view(["POST"])
+def fetch_result_data(request):
+  django_request = request._request
+  return notebook_api.fetch_result_data(django_request)
+
+@api_view(["POST"])
+def fetch_result_metadata(request):
+  django_request = request._request
+  return notebook_api.fetch_result_metadata(django_request)
+
+@api_view(["POST"])
+def fetch_result_size(request):
+  django_request = request._request
+  return notebook_api.fetch_result_size(django_request)
+
+@api_view(["POST"])
+def cancel_statement(request):
+  django_request = request._request
+  return notebook_api.cancel_statement(django_request)
+
+@api_view(["POST"])
+def close_statement(request):
+  django_request = request._request
+  return notebook_api.close_statement(django_request)
+
+
+@api_view(["POST"])
+def get_logs(request):
+  django_request = request._request
+  return notebook_api.get_logs(django_request)
+
 
 
 @api_view(["POST"])

+ 33 - 2
desktop/core/src/desktop/api_public_urls.py

@@ -38,8 +38,39 @@ urlpatterns = [
 ]
 
 # Compatibility with private API
-# https://demo.gethue.com/api/editor/execute/hive
+# https://demo.gethue.com/notebook/api/editor/execute/hive
 urlpatterns += [
-  re_path(r'^editor/create_notebook/?$', api_public.create_notebook, name='api_create_notebook'),
+  re_path(r'^create_notebook/?$', api_public.create_notebook, name='api_create_notebook'),
+  re_path(r'^create_session/?$', api_public.create_session, name='create_session'),
+  re_path(r'^close_session/?$', api_public.close_session, name='close_session'),
+  re_path(r'^execute(?:/(?P<dialect>.+))?/?$', api_public.execute, name='execute'),
+  re_path(r'^check_status/?$', api_public.check_status, name='check_status'),
+  re_path(r'^fetch_result_data/?$', api_public.fetch_result_data, name='fetch_result_data'),
+  re_path(r'^fetch_result_metadata/?$', api_public.fetch_result_metadata, name='fetch_result_metadata'),
+  re_path(r'^fetch_result_size/?$', api_public.fetch_result_size, name='fetch_result_size'),
+  re_path(r'^cancel_statement/?$', api_public.cancel_statement, name='cancel_statement'),
+  re_path(r'^close_statement/?$', api_public.close_statement, name='close_statement'),
+  re_path(r'^get_logs/?$', api_public.get_logs, name='get_logs'),
+
   re_path(r'^editor/autocomplete/?$', api_public.autocomplete, name='api_autocomplete_databases'),
+  re_path(
+      r"^autocomplete/(?P<database>[^/?]*)/?$",
+      api_public.autocomplete,
+      name="autocomplete_tables",
+  ),
+  re_path(
+      r"^autocomplete/(?P<database>[^/?]*)/(?P<table>[\w_\-]+)/?$",
+      api_public.autocomplete,
+      name="autocomplete_columns",
+  ),
+  re_path(
+      r"^autocomplete/(?P<database>[^/?]*)/(?P<table>[\w_\-]+)/(?P<column>\w+)/?$",
+      api_public.autocomplete,
+      name="autocomplete_column",
+  ),
+  re_path(
+      r"^autocomplete/(?P<database>[^/?]*)/(?P<table>[\w_\-]+)/(?P<column>\w+)/(?P<nested>.+)/?$",
+      api_public.autocomplete,
+      name="autocomplete_nested",
+  ),
 ]

+ 1 - 1
desktop/libs/notebook/src/notebook/api.py

@@ -743,7 +743,7 @@ def close_statement(request):
 @api_error_handler
 def autocomplete(request, server=None, database=None, table=None, column=None, nested=None):
   response = {'status': -1}
-  print(request.POST)
+
   # Passed by check_document_access_permission but unused by APIs
   notebook = json.loads(request.POST.get('notebook', '{}'))
   snippet = json.loads(request.POST.get('snippet', '{}'))

+ 2 - 12
docs/docs-site/content/developer/components/scratchpad/_index.md

@@ -27,21 +27,11 @@ We have the `gethue` [dependency](/developer/components/) in `packages.json` or
 
     </html>
 
-Note: even simpler you could just skip nom and grab the latest via:
+Note: even simpler you could just skip npm and grab the latest via:
 
     <script type="text/javascript" src="https://cdn.gethue.com/components/SqlScratchpadWebComponent.js"></script>
 
 
-API:
-
-Above expects a running Hue or [Compose](https://github.com/gethue/compose) APIs on http://locahost:8005.
-
-Note: if using Hue, it currently temporarily requires a hue/hue user and this ini settings:
-
-    [desktop]
-    cors_enabled=true
-
-    [[auth]]
-    auto_login_enabled=true
+Above expects a running Hue or [Compose](https://github.com/gethue/compose) APIs on http://locahost:8005 as the middleware between your Data Warehouse and client.
 
 !["SQL Scratchpad"](https://cdn.gethue.com/uploads/2021/05/sql-scratchpad-v0.5.png)