mirror of
https://github.com/apache/superset.git
synced 2026-04-21 00:54:44 +00:00
feat: split database information (#24067)
This commit is contained in:
@@ -61,6 +61,7 @@ from superset.databases.filters import DatabaseFilter, DatabaseUploadEnabledFilt
|
||||
from superset.databases.schemas import (
|
||||
database_schemas_query_schema,
|
||||
database_tables_query_schema,
|
||||
DatabaseConnectionSchema,
|
||||
DatabaseFunctionNamesResponse,
|
||||
DatabasePostSchema,
|
||||
DatabasePutSchema,
|
||||
@@ -122,6 +123,7 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
|
||||
"validate_sql",
|
||||
"delete_ssh_tunnel",
|
||||
"schemas_access_for_file_upload",
|
||||
"get_connection",
|
||||
}
|
||||
resource_name = "database"
|
||||
class_permission_name = "Database"
|
||||
@@ -144,12 +146,6 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
|
||||
"driver",
|
||||
"force_ctas_schema",
|
||||
"impersonate_user",
|
||||
"masked_encrypted_extra",
|
||||
"extra",
|
||||
"parameters",
|
||||
"parameters_schema",
|
||||
"server_cert",
|
||||
"sqlalchemy_uri",
|
||||
"is_managed_externally",
|
||||
"engine_information",
|
||||
]
|
||||
@@ -223,6 +219,7 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
|
||||
|
||||
openapi_spec_tag = "Database"
|
||||
openapi_spec_component_schemas = (
|
||||
DatabaseConnectionSchema,
|
||||
DatabaseFunctionNamesResponse,
|
||||
DatabaseSchemaAccessForFileUploadResponse,
|
||||
DatabaseRelatedObjectsResponse,
|
||||
@@ -237,6 +234,50 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
|
||||
ValidateSQLResponse,
|
||||
)
|
||||
|
||||
@expose("/<int:pk>/connection", methods=("GET",))
|
||||
@protect()
|
||||
@safe
|
||||
def get_connection(self, pk: int) -> Response:
|
||||
"""Get database connection info.
|
||||
---
|
||||
get:
|
||||
summary: >-
|
||||
Get a database connection info
|
||||
parameters:
|
||||
- in: path
|
||||
schema:
|
||||
type: integer
|
||||
description: The database id
|
||||
name: pk
|
||||
responses:
|
||||
200:
|
||||
description: Database with connection info
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/DatabaseConnectionSchema"
|
||||
400:
|
||||
$ref: '#/components/responses/400'
|
||||
401:
|
||||
$ref: '#/components/responses/401'
|
||||
422:
|
||||
$ref: '#/components/responses/422'
|
||||
500:
|
||||
$ref: '#/components/responses/500'
|
||||
"""
|
||||
database = DatabaseDAO.find_by_id(pk)
|
||||
database_connection_schema = DatabaseConnectionSchema()
|
||||
response = {
|
||||
"id": pk,
|
||||
"result": database_connection_schema.dump(database, many=False),
|
||||
}
|
||||
try:
|
||||
if ssh_tunnel := DatabaseDAO.get_ssh_tunnel(pk):
|
||||
response["result"]["ssh_tunnel"] = ssh_tunnel.data
|
||||
return self.response(200, **response)
|
||||
except SupersetException as ex:
|
||||
return self.response(ex.status, message=ex.message)
|
||||
|
||||
@expose("/<int:pk>", methods=("GET",))
|
||||
@protect()
|
||||
@safe
|
||||
|
||||
Reference in New Issue
Block a user