diff --git a/backend/app/repo/backup.go b/backend/app/repo/backup.go index 87e2a1826..58608472a 100644 --- a/backend/app/repo/backup.go +++ b/backend/app/repo/backup.go @@ -41,7 +41,7 @@ func (u *BackupRepo) ListRecord(opts ...DBOption) ([]model.BackupRecord, error) for _, opt := range opts { db = opt(db) } - err := db.Find(&users).Error + err := db.Debug().Find(&users).Error return users, err } @@ -57,7 +57,7 @@ func (u *BackupRepo) PageRecord(page, size int, opts ...DBOption) (int64, []mode return count, users, err } -func (c *BackupRepo) WithByDetailName(detailName string) DBOption { +func (u *BackupRepo) WithByDetailName(detailName string) DBOption { return func(g *gorm.DB) *gorm.DB { if len(detailName) == 0 { return g @@ -66,7 +66,7 @@ func (c *BackupRepo) WithByDetailName(detailName string) DBOption { } } -func (c *BackupRepo) WithByFileName(fileName string) DBOption { +func (u *BackupRepo) WithByFileName(fileName string) DBOption { return func(g *gorm.DB) *gorm.DB { if len(fileName) == 0 { return g @@ -75,6 +75,15 @@ func (c *BackupRepo) WithByFileName(fileName string) DBOption { } } +func (u *BackupRepo) WithByType(backupType string) DBOption { + return func(g *gorm.DB) *gorm.DB { + if len(backupType) == 0 { + return g + } + return g.Where("type = ?", backupType) + } +} + func (u *BackupRepo) List(opts ...DBOption) ([]model.BackupAccount, error) { var ops []model.BackupAccount db := global.DB.Model(&model.BackupAccount{}) diff --git a/backend/app/service/website.go b/backend/app/service/website.go index b2924996f..01e5075ad 100644 --- a/backend/app/service/website.go +++ b/backend/app/service/website.go @@ -268,7 +268,19 @@ func (w WebsiteService) DeleteWebsite(req request.WebsiteDelete) error { } } } - //TODO 删除备份 + if req.DeleteBackup { + backups, _ := backupRepo.ListRecord(backupRepo.WithByType("website-"+website.Type), commonRepo.WithByName(website.PrimaryDomain)) + if len(backups) > 0 { + fileOp := files.NewFileOp() + for _, b := range backups { + _ = fileOp.DeleteDir(b.FileDir) + } + } + if err := backupRepo.DeleteRecord(backupRepo.WithByType("website-"+website.Type), commonRepo.WithByName(website.PrimaryDomain)); err != nil { + return err + } + } + if err := websiteRepo.DeleteBy(ctx, commonRepo.WithByID(req.ID)); err != nil { tx.Rollback() return err diff --git a/backend/app/service/website_utils.go b/backend/app/service/website_utils.go index ce020cf12..05356b8f2 100644 --- a/backend/app/service/website_utils.go +++ b/backend/app/service/website_utils.go @@ -402,7 +402,8 @@ func handleWebsiteBackup(backupType, baseDir, backupDir, domain, backupName stri return err } nginxConfFile := fmt.Sprintf("%s/nginx/%s/conf/conf.d/%s.conf", constant.AppInstallDir, nginxInfo.Name, website.PrimaryDomain) - if err := copyConf(nginxConfFile, fmt.Sprintf("%s/%s.conf", tmpDir, website.PrimaryDomain)); err != nil { + fileOp := files.NewFileOp() + if err := fileOp.CopyFile(nginxConfFile, tmpDir); err != nil { return err }