diff --git a/internal/services/backup_service.go b/internal/services/backup_service.go index 0c44c04..19af5a6 100644 --- a/internal/services/backup_service.go +++ b/internal/services/backup_service.go @@ -58,6 +58,8 @@ func (s *BackupService) getTableConfigs() []tableConfig { {"notify_ways.json", s.exportTable(&[]models.NotifyWay{}), s.restoreTable(&[]models.NotifyWay{})}, {"notify_bindings.json", s.exportTable(&[]models.NotifyBinding{}), s.restoreTable(&[]models.NotifyBinding{})}, {"app_logs.json", s.exportTable(&[]models.AppLog{}), s.restoreTable(&[]models.AppLog{})}, + {"data_storage.json", s.exportTable(&[]models.DataStorage{}), s.restoreTable(&[]models.DataStorage{})}, + {"data_relations.json", s.exportTable(&[]models.DataRelation{}), s.restoreTable(&[]models.DataRelation{})}, } } @@ -234,6 +236,8 @@ func (s *BackupService) Restore(zipPath string) error { tx.Where("1=1").Delete(&models.NotifyWay{}) tx.Where("1=1").Delete(&models.NotifyBinding{}) tx.Where("1=1").Delete(&models.AppLog{}) + tx.Where("1=1").Delete(&models.DataStorage{}) + tx.Where("1=1").Delete(&models.DataRelation{}) // 2. 依次恢复每个表 for _, cfg := range configs { @@ -340,6 +344,10 @@ func (s *BackupService) restoreFromZipFile(tx *gorm.DB, f *zip.File, filename st return restoreStreamBatch[models.NotifyBinding](tx, decoder) case "app_logs.json": return restoreStreamBatch[models.AppLog](tx, decoder) + case "data_storage.json": + return restoreStreamBatch[models.DataStorage](tx, decoder) + case "data_relations.json": + return restoreStreamBatch[models.DataRelation](tx, decoder) default: return nil } diff --git a/internal/services/repo/repo_parser.go b/internal/services/repo/repo_parser.go index 9953df1..ae1df01 100644 --- a/internal/services/repo/repo_parser.go +++ b/internal/services/repo/repo_parser.go @@ -168,6 +168,11 @@ func ParseRepoScriptsAndAddCron(taskID string, logWriter io.Writer, forceComment log("[移除] 脚本已不存在,删除对应任务: %s", ot.Name) deletedTaskCount++ deletedIDs = append(deletedIDs, ot.ID) + + // 删除关联 + relation.DataRelation.CleanRelations(ot.ID, constant.RelationTypeTaskTag) + relation.DataRelation.CleanRelations(ot.ID, constant.RelationTypeTaskEnv) + database.DB.Unscoped().Where("id = ?", ot.ID).Delete(&models.Task{}) } }