Fix: add DataRelation to backup and clean relations on repo task delete
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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{})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user