diff --git a/models/dataset_reference.go b/models/dataset_reference.go index 90707e2be..a43cd625e 100644 --- a/models/dataset_reference.go +++ b/models/dataset_reference.go @@ -51,15 +51,15 @@ func getReferenceDatasetStr(repoID int64) string { return "" } -func deleteDatasetIdsByRepoID(repoID int64) error { +func DeleteReferenceDatasetIdsByRepoID(repoID int64) error { - _, err := x.Where("repo_id", repoID).Delete(new(DatasetReference)) + _, err := x.Exec("delete from dataset_reference where repo_id=?", repoID) return err } func NewDatasetIdsByRepoID(repoID int64, datasetIds []int64) error { - if len(datasetIds) == 0 { //关联数据集数组为空,不需要处理 - return nil + if len(datasetIds) == 0 { //关联数据集数组为空 + DeleteReferenceDatasetIdsByRepoID(repoID) } var datasetsStrArray []string for _, datasetId := range datasetIds { @@ -72,16 +72,17 @@ func NewDatasetIdsByRepoID(repoID int64, datasetIds []int64) error { return nil } if oldDatasetStr != "" { //已经存在关联数据集 - err := deleteDatasetIdsByRepoID(repoID) - if err != nil { - return err + _, err := x.Exec("update dataset_reference set dataset_id=? where repo_id=?", newDatasetStr, repoID) + + return err + } else { + datasetReference := DatasetReference{ + DatasetID: newDatasetStr, + RepoID: repoID, } - } - datasetReference := DatasetReference{ - DatasetID: newDatasetStr, - RepoID: repoID, + + _, err := x.Insert(datasetReference) + return err } - _, err := x.Insert(datasetReference) - return err } diff --git a/routers/repo/dataset.go b/routers/repo/dataset.go index 713c03f7e..3e4610856 100755 --- a/routers/repo/dataset.go +++ b/routers/repo/dataset.go @@ -280,7 +280,7 @@ func ReferenceDatasetDelete(ctx *context.Context) { for _, tempDatasetId := range oldDatasetIds { if datasetId != tempDatasetId { - newDatasetIds = append(newDatasetIds, datasetId) + newDatasetIds = append(newDatasetIds, tempDatasetId) } } err := models.NewDatasetIdsByRepoID(repoID, newDatasetIds)