From f245ff06c5e7b413e19de4df116a381ce7b88de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sat, 31 May 2025 17:23:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=9B=E5=BB=BA=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E7=94=A8=E6=88=B7=E6=97=B6=E5=A6=82=E6=9E=9C=E8=B5=8B?= =?UTF-8?q?=E4=BA=88=E6=9D=83=E9=99=90=E7=9A=84=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E4=B8=8D=E5=AD=98=E5=9C=A8=E6=97=B6=E6=98=BE=E7=A4=BA=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=EF=BC=8Cclose=20#785?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/data/database_user.go | 12 ++ pkg/db/postgres.go | 10 +- web/src/views/database/CreateUserModal.vue | 123 ++++++++++--------- web/src/views/database/UpdateServerModal.vue | 2 +- web/src/views/database/UpdateUserModal.vue | 61 +++++---- 5 files changed, 121 insertions(+), 87 deletions(-) diff --git a/internal/data/database_user.go b/internal/data/database_user.go index 6a570cf2..dfefbc13 100644 --- a/internal/data/database_user.go +++ b/internal/data/database_user.go @@ -78,6 +78,9 @@ func (r databaseUserRepo) Create(req *request.DatabaseUserCreate) error { return err } for name := range slices.Values(req.Privileges) { + if err = mysql.DatabaseCreate(name); err != nil { + return err + } if err = mysql.PrivilegesGrant(req.Username, name, req.Host); err != nil { return err } @@ -99,6 +102,9 @@ func (r databaseUserRepo) Create(req *request.DatabaseUserCreate) error { return err } for name := range slices.Values(req.Privileges) { + if err = postgres.DatabaseCreate(name); err != nil { + return err + } if err = postgres.PrivilegesGrant(req.Username, name); err != nil { return err } @@ -145,6 +151,9 @@ func (r databaseUserRepo) Update(req *request.DatabaseUserUpdate) error { } } for name := range slices.Values(req.Privileges) { + if err = mysql.DatabaseCreate(name); err != nil { + return err + } if err = mysql.PrivilegesGrant(user.Username, name, user.Host); err != nil { return err } @@ -163,6 +172,9 @@ func (r databaseUserRepo) Update(req *request.DatabaseUserUpdate) error { } } for name := range slices.Values(req.Privileges) { + if err = postgres.DatabaseCreate(name); err != nil { + return err + } if err = postgres.PrivilegesGrant(user.Username, name); err != nil { return err } diff --git a/pkg/db/postgres.go b/pkg/db/postgres.go index c75f6d21..7334af8c 100644 --- a/pkg/db/postgres.go +++ b/pkg/db/postgres.go @@ -71,7 +71,15 @@ func (r *Postgres) Prepare(query string) (*sql.Stmt, error) { } func (r *Postgres) DatabaseCreate(name string) error { - _, err := r.Exec(fmt.Sprintf("CREATE DATABASE %s", name)) + // postgres 不支持 CREATE DATABASE IF NOT EXISTS,但是为了保持与 MySQL 一致,先检查数据库是否存在 + exist, err := r.DatabaseExist(name) + if err != nil { + return err + } + if exist { + return nil + } + _, err = r.Exec(fmt.Sprintf("CREATE DATABASE %s", name)) return err } diff --git a/web/src/views/database/CreateUserModal.vue b/web/src/views/database/CreateUserModal.vue index 94763335..0521b887 100644 --- a/web/src/views/database/CreateUserModal.vue +++ b/web/src/views/database/CreateUserModal.vue @@ -59,64 +59,71 @@ watch( :segmented="false" @close="show = false" > - - - - - - - - - - - - - - - - - - - - - - - - {{ $gettext('Submit') }} + + + {{ + $gettext('If the privilege databases does not exist, it will be created automatically. ') + }} + + + + + + + + + + + + + + + + + + + + + + + + + {{ $gettext('Submit') }} + diff --git a/web/src/views/database/UpdateServerModal.vue b/web/src/views/database/UpdateServerModal.vue index de3bc59d..8c5fa6fe 100644 --- a/web/src/views/database/UpdateServerModal.vue +++ b/web/src/views/database/UpdateServerModal.vue @@ -27,7 +27,7 @@ watch( () => show.value, (value) => { if (value && id.value) { - useRequest(database.serverGet(id.value)).onSuccess(({ data }) => { + useRequest(database.serverGet(id.value)).onSuccess(({ data }: { data: any }) => { updateModel.value.name = data.name updateModel.value.host = data.host updateModel.value.port = data.port diff --git a/web/src/views/database/UpdateUserModal.vue b/web/src/views/database/UpdateUserModal.vue index 39007a70..385e9547 100644 --- a/web/src/views/database/UpdateUserModal.vue +++ b/web/src/views/database/UpdateUserModal.vue @@ -24,7 +24,7 @@ watch( () => show.value, (value) => { if (value && id.value) { - useRequest(database.userGet(id.value)).onSuccess(({ data }) => { + useRequest(database.userGet(id.value)).onSuccess(({ data }: { data: any }) => { updateModel.value.password = data.password updateModel.value.privileges = data.privileges updateModel.value.remark = data.remark @@ -45,32 +45,39 @@ watch( :segmented="false" @close="show = false" > - - - - - - - - - - - - {{ $gettext('Submit') }} + + + {{ + $gettext('If the privilege databases does not exist, it will be created automatically. ') + }} + + + + + + + + + + + + + {{ $gettext('Submit') }} +