Merge branch 'dev' into feature/20260602_connection_driver_i18n

# Conflicts:
#	shared/i18n/de-DE.json
#	shared/i18n/en-US.json
#	shared/i18n/ja-JP.json
#	shared/i18n/ru-RU.json
#	shared/i18n/zh-CN.json
#	shared/i18n/zh-TW.json
This commit is contained in:
tianqijiuyun-latiao
2026-06-23 16:23:43 +08:00
34 changed files with 30164 additions and 29192 deletions

View File

@@ -195,6 +195,9 @@ func (a *App) CreateDatabase(config connection.ConnectionConfig, dbName string)
if dbName == "" {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.database_name_required", nil)}
}
if err := ensureReadOnlyConnectionAllowsAction(config, "创建数据库"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
runConfig := config
runConfig.Database = ""
@@ -365,6 +368,9 @@ func resolveSchemaDDLTargetDatabaseWithText(config connection.ConnectionConfig,
}
func (a *App) CreateSchema(config connection.ConnectionConfig, dbName string, schemaName string) connection.QueryResult {
if err := ensureReadOnlyConnectionAllowsAction(config, "创建模式"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
dbType := resolveDDLDBType(config)
targetDbName, err := resolveSchemaDDLTargetDatabaseWithText(config, dbName, a.appText)
if err != nil {
@@ -390,6 +396,9 @@ func (a *App) CreateSchema(config connection.ConnectionConfig, dbName string, sc
}
func (a *App) RenameSchema(config connection.ConnectionConfig, dbName string, oldSchemaName string, newSchemaName string) connection.QueryResult {
if err := ensureReadOnlyConnectionAllowsAction(config, "重命名模式"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
dbType := resolveDDLDBType(config)
targetDbName, err := resolveSchemaDDLTargetDatabaseWithText(config, dbName, a.appText)
if err != nil {
@@ -413,6 +422,9 @@ func (a *App) RenameSchema(config connection.ConnectionConfig, dbName string, ol
}
func (a *App) DropSchema(config connection.ConnectionConfig, dbName string, schemaName string) connection.QueryResult {
if err := ensureReadOnlyConnectionAllowsAction(config, "删除模式"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
dbType := resolveDDLDBType(config)
targetDbName, err := resolveSchemaDDLTargetDatabaseWithText(config, dbName, a.appText)
if err != nil {
@@ -668,6 +680,9 @@ func (a *App) RenameDatabase(config connection.ConnectionConfig, oldName string,
if oldName == "" || newName == "" {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.database_name_required", nil)}
}
if err := ensureReadOnlyConnectionAllowsAction(config, "重命名数据库"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
if strings.EqualFold(oldName, newName) {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.database_same_name", nil)}
}
@@ -711,6 +726,9 @@ func (a *App) DropDatabase(config connection.ConnectionConfig, dbName string) co
if dbName == "" {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.database_name_required", nil)}
}
if err := ensureReadOnlyConnectionAllowsAction(config, "删除数据库"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
dbType := resolveDDLDBType(config)
var (
@@ -745,6 +763,9 @@ func (a *App) RenameTable(config connection.ConnectionConfig, dbName string, old
if oldTableName == "" || newTableName == "" {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.table_name_required", nil)}
}
if err := ensureReadOnlyConnectionAllowsAction(config, "重命名表"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
if strings.EqualFold(oldTableName, newTableName) {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.table_same_name", nil)}
}
@@ -797,6 +818,9 @@ func (a *App) DropTable(config connection.ConnectionConfig, dbName string, table
if tableName == "" {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.table_name_required", nil)}
}
if err := ensureReadOnlyConnectionAllowsAction(config, "删除表"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
dbType := resolveDDLDBType(config)
switch dbType {
@@ -860,13 +884,17 @@ func (a *App) DBQueryWithCancel(config connection.ConnectionConfig, dbName strin
queryID = generateQueryID()
}
query = sanitizeSQLForPgLike(resolveDDLDBType(config), query)
if err := ensureReadOnlyConnectionAllowsQuery(config, query); err != nil {
return connection.QueryResult{Success: false, Message: err.Error(), QueryID: queryID}
}
dbInst, err := a.getDatabase(runConfig)
if err != nil {
logger.Error(err, "DBQuery 获取连接失败:%s", formatConnSummary(runConfig))
return connection.QueryResult{Success: false, Message: err.Error(), QueryID: queryID}
}
query = sanitizeSQLForPgLike(resolveDDLDBType(config), query)
ctx, cancel := newQueryExecutionContext(runConfig)
defer cancel()
@@ -992,13 +1020,17 @@ func (a *App) DBQueryMulti(config connection.ConnectionConfig, dbName string, qu
queryID = generateQueryID()
}
query = sanitizeSQLForPgLike(resolveDDLDBType(config), query)
if err := ensureReadOnlyConnectionAllowsQuery(config, query); err != nil {
return connection.QueryResult{Success: false, Message: err.Error(), QueryID: queryID}
}
dbInst, err := a.getDatabase(runConfig)
if err != nil {
logger.Error(err, "DBQueryMulti 获取连接失败:%s", formatConnSummary(runConfig))
return connection.QueryResult{Success: false, Message: err.Error(), QueryID: queryID}
}
query = sanitizeSQLForPgLike(resolveDDLDBType(config), query)
ctx, cancel := newQueryExecutionContext(runConfig)
defer cancel()
@@ -1396,6 +1428,11 @@ func looksLikeSQLServerProcedureInvocation(query string) bool {
func (a *App) DBQueryIsolated(config connection.ConnectionConfig, dbName string, query string) connection.QueryResult {
runConfig := normalizeRunConfig(config, dbName)
query = sanitizeSQLForPgLike(resolveDDLDBType(config), query)
if err := ensureReadOnlyConnectionAllowsQuery(config, query); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
dbInst, err := a.openDatabaseIsolated(runConfig)
if err != nil {
logger.Error(err, "DBQueryIsolated 获取连接失败:%s", formatConnSummary(runConfig))
@@ -1407,7 +1444,6 @@ func (a *App) DBQueryIsolated(config connection.ConnectionConfig, dbName string,
}
}()
query = sanitizeSQLForPgLike(resolveDDLDBType(config), query)
ctx, cancel := newQueryExecutionContext(runConfig)
defer cancel()
@@ -2275,6 +2311,9 @@ func (a *App) DropView(config connection.ConnectionConfig, dbName string, viewNa
if viewName == "" {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.view_name_required", nil)}
}
if err := ensureReadOnlyConnectionAllowsAction(config, "删除视图"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
dbType := resolveDDLDBType(config)
switch dbType {
@@ -2307,6 +2346,9 @@ func (a *App) DropFunction(config connection.ConnectionConfig, dbName string, ro
if routineName == "" {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.routine_name_required", nil)}
}
if err := ensureReadOnlyConnectionAllowsAction(config, "删除函数或存储过程"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
if routineType != "FUNCTION" && routineType != "PROCEDURE" {
routineType = "FUNCTION"
}
@@ -2349,6 +2391,9 @@ func (a *App) RenameView(config connection.ConnectionConfig, dbName string, oldN
if oldName == "" || newName == "" {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.view_name_required", nil)}
}
if err := ensureReadOnlyConnectionAllowsAction(config, "重命名视图"); err != nil {
return connection.QueryResult{Success: false, Message: err.Error()}
}
if strings.EqualFold(oldName, newName) {
return connection.QueryResult{Success: false, Message: a.appText("db.backend.error.view_same_name", nil)}
}