Selaa lähdekoodia

[api] Add optional database param for /execute public API (#2683)

- It is required because only one statement gets executed via the API call. So, queries like `show tables;` gets executed but since no database is mentioned so it always picks the default database.

- Therefore, with this optional param, we can mention specific database for similar queries like above.
Harsh Gupta 3 vuotta sitten
vanhempi
commit
2b814257bf
1 muutettua tiedostoa jossa 10 lisäystä ja 0 poistoa
  1. 10 0
      desktop/core/src/desktop/api_public.py

+ 10 - 0
desktop/core/src/desktop/api_public.py

@@ -16,6 +16,7 @@
 # limitations under the License.
 
 import logging
+import json
 
 from django.http import QueryDict, HttpResponse
 from rest_framework.decorators import api_view
@@ -93,6 +94,15 @@ def execute(request, dialect=None):
       'snippet': '{"id":%(interpreter_id)s,"type":"%(interpreter)s","result":{},"statement":"%(statement)s","properties":{}}' % params
     }
 
+    # Optional database param for specific query statements like "show tables;"
+    if django_request.POST.get('database'):
+      database = django_request.POST.get('database')
+      snippet = json.loads(data['snippet'])
+      snippet['database'] = database
+
+      data['snippet'] = json.dumps(snippet)
+
+
     django_request.POST = QueryDict(mutable=True)
     django_request.POST.update(data)