From 8faa3b6e51183e92ebe4695547cf89ebda19eece Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Sat, 16 Sep 2023 14:36:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=AE=BE=E7=BD=AE=E8=B7=B3=E8=BD=AC=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=20(#2320)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/service/app.go | 41 ++++++++++++------------ backend/app/service/database_mysql.go | 2 +- frontend/src/routers/modules/database.ts | 2 +- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/backend/app/service/app.go b/backend/app/service/app.go index f26c22f2f..4a490a74a 100644 --- a/backend/app/service/app.go +++ b/backend/app/service/app.go @@ -5,6 +5,14 @@ import ( "encoding/base64" "encoding/json" "fmt" + "io" + "net/http" + "os" + "path" + "reflect" + "strconv" + "strings" + "github.com/1Panel-dev/1Panel/backend/app/dto" "github.com/1Panel-dev/1Panel/backend/app/dto/request" "github.com/1Panel-dev/1Panel/backend/app/dto/response" @@ -19,12 +27,6 @@ import ( "github.com/1Panel-dev/1Panel/backend/utils/files" http2 "github.com/1Panel-dev/1Panel/backend/utils/http" "gopkg.in/yaml.v3" - "io" - "net/http" - "os" - "path" - "strconv" - "strings" ) type AppService struct { @@ -282,6 +284,12 @@ func (a AppService) Install(ctx context.Context, req request.AppInstallCreate) ( if err != nil { return } + if DatabaseKeys[app.Key] > 0 { + if existDatabases, _ := databaseRepo.GetList(commonRepo.WithByName(req.Name)); len(existDatabases) > 0 { + err = buserr.New(constant.ErrRemoteExist) + return + } + } for key := range req.Params { if !strings.Contains(key, "PANEL_APP_PORT") { continue @@ -389,22 +397,13 @@ func (a AppService) Install(ctx context.Context, req request.AppInstallCreate) ( } } }() - if dbHost, ok := req.Params["PANEL_DB_HOST"]; ok { - var ( - databaseID int - database model.Database - ) - databaseID, err = strconv.Atoi(dbHost.(string)) - if err != nil { - return + if hostName, ok := req.Params["PANEL_DB_HOST"]; ok { + database, _ := databaseRepo.Get(commonRepo.WithByName(hostName.(string))) + if !reflect.DeepEqual(database, model.Database{}) { + req.Params["PANEL_DB_HOST"] = database.Address + req.Params["PANEL_DB_PORT"] = database.Port + req.Params["PANEL_DB_HOST_NAME"] = hostName } - database, err = databaseRepo.Get(commonRepo.WithByID(uint(databaseID))) - if err != nil { - return - } - req.Params["PANEL_DB_HOST"] = database.Address - req.Params["PANEL_DB_PORT"] = database.Port - req.Params["PANEL_DB_HOST_ID"] = uint(databaseID) } paramByte, err = json.Marshal(req.Params) if err != nil { diff --git a/backend/app/service/database_mysql.go b/backend/app/service/database_mysql.go index 4cd802238..1b2af16be 100644 --- a/backend/app/service/database_mysql.go +++ b/backend/app/service/database_mysql.go @@ -150,7 +150,7 @@ func (u *MysqlService) LoadFromRemote(req dto.MysqlLoadDB) error { return err } - databases, err := mysqlRepo.List(databaseRepo.WithByFrom(req.From)) + databases, err := mysqlRepo.List(mysqlRepo.WithByMysqlName(req.Database)) if err != nil { return err } diff --git a/frontend/src/routers/modules/database.ts b/frontend/src/routers/modules/database.ts index 752b9c3d4..38c71b7fe 100644 --- a/frontend/src/routers/modules/database.ts +++ b/frontend/src/routers/modules/database.ts @@ -28,7 +28,7 @@ const databaseRouter = { }, }, { - path: 'mysql/setting/:type/:database/:databaseID', + path: 'mysql/setting/:type/:database', name: 'MySQL-Setting', component: () => import('@/views/database/mysql/setting/index.vue'), props: true,