From b05e5736a6008bf326ac1bc66a14aefa6700f4d2 Mon Sep 17 00:00:00 2001
From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com>
Date: Tue, 25 Jul 2023 17:22:20 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8D=87=E7=BA=A7=E5=BA=94=E7=94=A8?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=87=E4=BB=BD=E9=80=89=E9=A1=B9=20(#1750?=
=?UTF-8?q?)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Refs https://github.com/1Panel-dev/1Panel/issues/1742
---
backend/app/dto/request/app.go | 1 +
backend/app/service/app_install.go | 2 +-
backend/app/service/app_utils.go | 11 ++++++-----
backend/i18n/lang/en.yaml | 1 +
backend/i18n/lang/zh-Hant.yaml | 1 +
backend/i18n/lang/zh.yaml | 1 +
frontend/src/lang/modules/en.ts | 2 ++
frontend/src/lang/modules/tw.ts | 2 ++
frontend/src/lang/modules/zh.ts | 2 ++
.../src/views/app-store/installed/upgrade/index.vue | 5 +++++
10 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/backend/app/dto/request/app.go b/backend/app/dto/request/app.go
index 1ae960bfd..40ad6b10b 100644
--- a/backend/app/dto/request/app.go
+++ b/backend/app/dto/request/app.go
@@ -58,6 +58,7 @@ type AppInstalledOperate struct {
ForceDelete bool `json:"forceDelete"`
DeleteBackup bool `json:"deleteBackup"`
DeleteDB bool `json:"deleteDB"`
+ Backup bool `json:"backup"`
}
type AppInstalledUpdate struct {
diff --git a/backend/app/service/app_install.go b/backend/app/service/app_install.go
index 3272ac6e5..11c616e08 100644
--- a/backend/app/service/app_install.go
+++ b/backend/app/service/app_install.go
@@ -236,7 +236,7 @@ func (a *AppInstallService) Operate(req request.AppInstalledOperate) error {
case constant.Sync:
return syncById(install.ID)
case constant.Upgrade:
- return upgradeInstall(install.ID, req.DetailId)
+ return upgradeInstall(install.ID, req.DetailId, req.Backup)
default:
return errors.New("operate not support")
}
diff --git a/backend/app/service/app_utils.go b/backend/app/service/app_utils.go
index 7665b956d..c30dee3a9 100644
--- a/backend/app/service/app_utils.go
+++ b/backend/app/service/app_utils.go
@@ -227,7 +227,7 @@ func deleteLink(ctx context.Context, install *model.AppInstall, deleteDB bool, f
return appInstallResourceRepo.DeleteBy(ctx, appInstallResourceRepo.WithAppInstallId(install.ID))
}
-func upgradeInstall(installId uint, detailId uint) error {
+func upgradeInstall(installId uint, detailId uint, backup bool) error {
install, err := appInstallRepo.GetFirst(commonRepo.WithByID(installId))
if err != nil {
return err
@@ -239,13 +239,14 @@ func upgradeInstall(installId uint, detailId uint) error {
if install.Version == detail.Version {
return errors.New("two version is same")
}
- if err := NewIBackupService().AppBackup(dto.CommonBackup{Name: install.App.Key, DetailName: install.Name}); err != nil {
- return err
- }
-
install.Status = constant.Upgrading
go func() {
+ if backup {
+ if err = NewIBackupService().AppBackup(dto.CommonBackup{Name: install.App.Key, DetailName: install.Name}); err != nil {
+ global.LOG.Errorf(i18n.GetMsgWithMap("ErrAppBackup", map[string]interface{}{"name": install.Name, "err": err.Error()}))
+ }
+ }
var upErr error
defer func() {
if upErr != nil {
diff --git a/backend/i18n/lang/en.yaml b/backend/i18n/lang/en.yaml
index a26950de4..5c3dcc174 100644
--- a/backend/i18n/lang/en.yaml
+++ b/backend/i18n/lang/en.yaml
@@ -44,6 +44,7 @@ ErrNoSuchHost: "Network connection failed"
ErrImagePullTimeOut: 'Image pull timeout'
ErrContainerNotFound: '{{ .name }} container does not exist'
ErrContainerMsg: '{{ .name }} container is abnormal, please check the log on the container page for details'
+ErrAppBackup: '{{ .name }} application backup failed err {{.err}}'
#file
ErrFileCanNotRead: "File can not read"
diff --git a/backend/i18n/lang/zh-Hant.yaml b/backend/i18n/lang/zh-Hant.yaml
index 56aa410c9..8587ea2bb 100644
--- a/backend/i18n/lang/zh-Hant.yaml
+++ b/backend/i18n/lang/zh-Hant.yaml
@@ -44,6 +44,7 @@ ErrNoSuchHost: "網路連接失敗"
ErrImagePullTimeOut: "鏡像拉取超時"
ErrContainerNotFound: '{{ .name }} 容器不存在'
ErrContainerMsg: '{{ .name }} 容器異常,具體請在容器頁面查看日誌'
+ErrAppBackup: '{{ .name }} 應用備份失敗 err {{.err}}'
#file
ErrFileCanNotRead: "此文件不支持預覽"
diff --git a/backend/i18n/lang/zh.yaml b/backend/i18n/lang/zh.yaml
index f06c04735..0807a525b 100644
--- a/backend/i18n/lang/zh.yaml
+++ b/backend/i18n/lang/zh.yaml
@@ -44,6 +44,7 @@ ErrNoSuchHost: "网络连接失败"
ErrImagePullTimeOut: '镜像拉取超时'
ErrContainerNotFound: '{{ .name }} 容器不存在'
ErrContainerMsg: '{{ .name }} 容器异常,具体请在容器页面查看日志'
+ErrAppBackup: '{{ .name }} 应用备份失败 err {{.err}}'
#file
ErrFileCanNotRead: "此文件不支持预览"
diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts
index 2a176aff4..757d1d26b 100644
--- a/frontend/src/lang/modules/en.ts
+++ b/frontend/src/lang/modules/en.ts
@@ -1221,6 +1221,8 @@ const message = {
cancelIgnore: 'Cancel ignore',
ignoreList: 'ignore list',
appHelper: 'Please view the installation instructions of some applications on the application details page',
+ backupApp: 'Backup application before upgrade',
+ backupAppHelper: 'If the upgrade fails, you can use the application backup to roll back',
},
website: {
website: 'Website',
diff --git a/frontend/src/lang/modules/tw.ts b/frontend/src/lang/modules/tw.ts
index afb42b47c..721036dc5 100644
--- a/frontend/src/lang/modules/tw.ts
+++ b/frontend/src/lang/modules/tw.ts
@@ -1166,6 +1166,8 @@ const message = {
cancelIgnore: '取消忽略',
ignoreList: '忽略列表',
appHelper: '部分應用的安裝使用說明請在應用詳情頁查看',
+ backupApp: '升級前備份應用',
+ backupAppHelper: '升級失敗可以使用應用備份回滾',
},
website: {
website: '網站',
diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts
index 9d3734ada..cf192016c 100644
--- a/frontend/src/lang/modules/zh.ts
+++ b/frontend/src/lang/modules/zh.ts
@@ -1166,6 +1166,8 @@ const message = {
cancelIgnore: '取消忽略',
ignoreList: '忽略列表',
appHelper: '部分应用的安装使用说明请在应用详情页查看',
+ backupApp: '升级前备份应用',
+ backupAppHelper: '升级失败可以使用应用备份回滚',
},
website: {
website: '网站',
diff --git a/frontend/src/views/app-store/installed/upgrade/index.vue b/frontend/src/views/app-store/installed/upgrade/index.vue
index 5ffb50922..d1d3ca057 100644
--- a/frontend/src/views/app-store/installed/upgrade/index.vue
+++ b/frontend/src/views/app-store/installed/upgrade/index.vue
@@ -27,6 +27,10 @@
>
+
+
+ {{ $t('app.backupAppHelper') }}
+
@@ -59,6 +63,7 @@ const operateReq = reactive({
detailId: 0,
operate: 'upgrade',
installId: 0,
+ backup: true,
});
const resourceName = ref('');
const rules = ref({