From cbbebc33c8cf835d8381a00000427da172ad7c9a Mon Sep 17 00:00:00 2001 From: zhengkunwang223 <1paneldev@sina.com> Date: Mon, 29 Sep 2025 11:26:20 +0800 Subject: [PATCH] feat: Delete associated database when deleting website --- agent/app/dto/request/website.go | 1 + agent/app/service/website.go | 30 +++++++++++++++++++ frontend/src/lang/modules/en.ts | 1 + frontend/src/lang/modules/es-es.ts | 1 + frontend/src/lang/modules/ja.ts | 1 + frontend/src/lang/modules/ko.ts | 1 + frontend/src/lang/modules/ms.ts | 1 + frontend/src/lang/modules/pt-br.ts | 1 + frontend/src/lang/modules/ru.ts | 1 + frontend/src/lang/modules/tr.ts | 1 + frontend/src/lang/modules/zh-Hant.ts | 1 + frontend/src/lang/modules/zh.ts | 1 + .../host/process/process/detail/index.vue | 23 ++++++++++++-- .../views/website/website/delete/index.vue | 24 ++++++++------- 14 files changed, 75 insertions(+), 13 deletions(-) diff --git a/agent/app/dto/request/website.go b/agent/app/dto/request/website.go index 54a388a96ce5..51fcc1b2c5f2 100644 --- a/agent/app/dto/request/website.go +++ b/agent/app/dto/request/website.go @@ -95,6 +95,7 @@ type WebsiteDelete struct { DeleteApp bool `json:"deleteApp"` DeleteBackup bool `json:"deleteBackup"` ForceDelete bool `json:"forceDelete"` + DeleteDB bool `json:"deleteDB"` } type WebsiteOp struct { diff --git a/agent/app/service/website.go b/agent/app/service/website.go index ab39e9152748..cfe24d94c642 100644 --- a/agent/app/service/website.go +++ b/agent/app/service/website.go @@ -641,6 +641,36 @@ func (w WebsiteService) DeleteWebsite(req request.WebsiteDelete) error { return buserr.WithName("ErrParentWebsite", strings.Join(names, ",")) } } + + if website.Type == constant.Runtime && req.DeleteDB && website.DbID != 0 { + switch website.DbType { + case constant.AppMysql, constant.AppMariaDB: + mysqlDB, _ := mysqlRepo.Get(repo.WithByID(website.DbID)) + if mysqlDB.ID > 0 { + deleteReq := dto.MysqlDBDelete{ + ID: mysqlDB.ID, + Database: mysqlDB.MysqlName, + ForceDelete: req.ForceDelete, + } + if err = NewIMysqlService().Delete(context.TODO(), deleteReq); err != nil && !req.ForceDelete { + return err + } + } + case constant.AppPostgresql, constant.AppPostgres: + pgDB, _ := postgresqlRepo.Get(repo.WithByID(website.DbID)) + if pgDB.ID > 0 { + deleteReq := dto.PostgresqlDBDelete{ + ID: pgDB.ID, + ForceDelete: req.ForceDelete, + Database: pgDB.PostgresqlName, + } + if err = NewIPostgresqlService().Delete(context.TODO(), deleteReq); err != nil && !req.ForceDelete { + return err + } + } + } + } + if err = delNginxConfig(website, req.ForceDelete); err != nil { return err } diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index c3c7b950d1b0..fc6c9602b2e1 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -2347,6 +2347,7 @@ const message = { 'Force deletion will ignore errors during the deletion process and eventually delete metadata.', deleteAppHelper: 'Delete associated applications and application backups at the same time', deleteBackupHelper: 'Also delete website backups.', + deleteDatabaseHelper: 'Also delete the database associated with the website', deleteConfirmHelper: `The delete operation can't be undone. Enter "{0}" to confirm deletion.`, staticPath: 'The corresponding main directory is ', limit: 'Scheme', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 7c6e5fc94083..0bee1fd9d90e 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -2336,6 +2336,7 @@ const message = { forceDeleteHelper: 'La eliminación forzada ignorará errores y eliminará metadatos igualmente.', deleteAppHelper: 'Eliminar también aplicaciones y backups asociados', deleteBackupHelper: 'Eliminar también copias de seguridad del sitio', + deleteDatabaseHelper: 'También eliminar la base de datos asociada al sitio web', deleteConfirmHelper: `Esta acción es irreversible. Escribe "{0}" para confirmar.`, staticPath: 'El directorio principal correspondiente es ', limit: 'Esquema', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 43018376f15a..32391ebabae2 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -2262,6 +2262,7 @@ const message = { forceDeleteHelper: 'フォース削除は、削除プロセス中のエラーを無視し、最終的にメタデータを削除します。', deleteAppHelper: '関連するアプリケーションとアプリケーションのバックアップを同時に削除する', deleteBackupHelper: 'また、Webサイトのバックアップを削除します。', + deleteDatabaseHelper: 'ウェブサイトに関連付けられたデータベースも削除します', deleteConfirmHelper: '削除操作を元に戻すことはできません。 "{0}" を入力して、削除を確認します。', staticPath: '対応するメインディレクトリはです', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 7b8520b879f5..2e5b0f5c2ecd 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -2223,6 +2223,7 @@ const message = { forceDeleteHelper: '강제 삭제는 삭제 과정에서 발생하는 오류를 무시하고 최종적으로 메타데이터를 삭제합니다.', deleteAppHelper: '관련 애플리케이션 및 애플리케이션 백업을 동시에 삭제합니다.', deleteBackupHelper: '웹사이트 백업도 삭제합니다.', + deleteDatabaseHelper: '웹사이트와 연결된 데이터베이스도 삭제합니다', deleteConfirmHelper: '삭제 작업은 되돌릴 수 없습니다. 확인하려면 "{0}"을(를) 입력하세요.', staticPath: '해당 주요 디렉터리는', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index ab75a47e86c0..b3d12e501234 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -2316,6 +2316,7 @@ const message = { forceDeleteHelper: 'Padam paksa akan mengabaikan ralat semasa proses pemadaman dan akhirnya memadam metadata.', deleteAppHelper: 'Padam aplikasi yang berkaitan dan sandaran aplikasi pada masa yang sama', deleteBackupHelper: 'Juga padamkan sandaran laman web.', + deleteDatabaseHelper: 'Juga hapuskan pangkalan data yang berkaitan dengan laman web', deleteConfirmHelper: `Operasi pemadaman tidak boleh dibatalkan. Masukkan "{0}" untuk mengesahkan pemadaman.`, staticPath: 'Direktori utama yang sepadan ialah ', limit: 'Skim', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 385510ffb259..a611d7a26bcf 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -2317,6 +2317,7 @@ const message = { forceDeleteHelper: 'A exclusão forçada ignorará erros durante o processo de exclusão e excluirá os metadados.', deleteAppHelper: 'Excluir aplicativos associados e backups de aplicativos ao mesmo tempo', deleteBackupHelper: 'Excluir também backups do site.', + deleteDatabaseHelper: 'Também excluir o banco de dados associado ao site', deleteConfirmHelper: `A operação de exclusão não pode ser desfeita. Digite "{0}" para confirmar a exclusão.`, staticPath: 'O diretório principal correspondente é ', limit: 'Plano', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index bde73a4f9c67..702ce23f00ef 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -2314,6 +2314,7 @@ const message = { 'Принудительное удаление будет игнорировать ошибки во время процесса удаления и в итоге удалит метаданные.', deleteAppHelper: 'Удалить связанные приложения и резервные копии приложений одновременно', deleteBackupHelper: 'Также удалить резервные копии веб-сайта.', + deleteDatabaseHelper: 'Также удалить базу данных, связанную с веб-сайтом', deleteConfirmHelper: 'Операцию удаления нельзя отменить. Введите "{0}" для подтверждения удаления.', staticPath: 'Соответствующая основная директория - ', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index ee7011420504..ab6b83373ea7 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -2376,6 +2376,7 @@ const message = { 'Zorla silme, silme işlemi sırasında oluşan hataları yok sayar ve nihayetinde meta verileri siler.', deleteAppHelper: 'İlgili uygulamaları ve uygulama yedeklerini aynı anda sil', deleteBackupHelper: 'Web sitesi yedeklerini de sil.', + deleteDatabaseHelper: 'Ayrıca web sitesi ile ilişkili veritabanını da sil', deleteConfirmHelper: 'Silme işlemi geri alınamaz. Silmeyi onaylamak için "{0}" yazın.', staticPath: 'Karşılık gelen ana dizin ', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 6c97e9b300d1..9c01939afc93 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -2187,6 +2187,7 @@ const message = { forceDeleteHelper: '強制刪除,會忽略刪除過程中產生的錯誤並最終刪除中繼資料', deleteAppHelper: '同時刪除關聯應用、資料庫以及應用備份', deleteBackupHelper: '同時刪除網站備份', + deleteDatabaseHelper: '同時刪除網站關聯資料庫', deleteConfirmHelper: '刪除操作無法回滾,請輸入 "{0}" 刪除', staticPath: '對應主目錄:', limit: '限制方案', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 8a67844e5f5c..5fe04fa7c0fe 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -2178,6 +2178,7 @@ const message = { forceDeleteHelper: '强制删除,会忽略删除过程中产生的错误并最终删除元数据', deleteAppHelper: '同时删除关联应用、数据库以及应用备份', deleteBackupHelper: '同时删除网站备份', + deleteDatabaseHelper: '同时删除网站关联数据库', deleteConfirmHelper: '删除操作无法回滚,请输入 "{0}" 删除', staticPath: '对应主目录:', limit: '限制方案', diff --git a/frontend/src/views/host/process/process/detail/index.vue b/frontend/src/views/host/process/process/detail/index.vue index dd0184907e68..0e023c4062e7 100644 --- a/frontend/src/views/host/process/process/detail/index.vue +++ b/frontend/src/views/host/process/process/detail/index.vue @@ -47,7 +47,7 @@ - + @@ -61,7 +61,7 @@ > - +