feat(translate): add insert_method dispatch and model/schema updates for direct DB

This commit is contained in:
2026-06-11 19:12:35 +03:00
parent 1f9040d53e
commit 55604498ae
13 changed files with 249 additions and 251 deletions

View File

@@ -76,5 +76,57 @@ class SupersetDatabasesMixin:
_, databases = await self.get_databases(query=query)
return databases[0] if databases else None
# #endregion SupersetClientGetDatabaseByUuid
# #region SupersetClientCreateDatabase [TYPE Function] [C:3]
# @ingroup Core
# @PURPOSE: Register a new database in Superset via REST API.
# @POST Returns the created database dict with id.
# @SIDE_EFFECT Makes POST request to /api/v1/database/.
# @RELATION CALLS -> [AsyncAPIClient.request]
async def create_database(
self,
database_name: str,
sqlalchemy_uri: str,
expose_in_sqllab: bool = True,
allow_dml: bool = False,
) -> dict:
with belief_scope("SupersetClient.create_database"):
app_logger.reason(
"Creating database in Superset",
extra={"database_name": database_name, "expose_in_sqllab": expose_in_sqllab},
)
response = await self.client.request(
method="POST",
endpoint="/database/",
data={
"database_name": database_name,
"sqlalchemy_uri": sqlalchemy_uri,
"expose_in_sqllab": expose_in_sqllab,
"allow_dml": allow_dml,
},
)
response = cast(dict, response)
app_logger.reflect(
"Database created",
extra={"database_id": response.get("id"), "database_name": database_name},
)
return response
# #endregion SupersetClientCreateDatabase
# #region SupersetClientDeleteDatabase [TYPE Function] [C:3]
# @ingroup Core
# @PURPOSE: Delete a database from Superset by ID.
# @POST Database removed from Superset.
# @SIDE_EFFECT Makes DELETE request to /api/v1/database/<id>.
# @RELATION CALLS -> [AsyncAPIClient.request]
async def delete_database(self, database_id: int) -> dict:
with belief_scope("SupersetClient.delete_database"):
app_logger.reason("Deleting database", extra={"database_id": database_id})
response = await self.client.request(
method="DELETE",
endpoint=f"/database/{database_id}",
)
response = cast(dict, response)
app_logger.reflect("Database deleted", extra={"database_id": database_id})
return response
# #endregion SupersetClientDeleteDatabase
# #endregion SupersetDatabasesMixin
# #endregion SupersetDatabasesMixin