|
- package models
-
- import (
- "strconv"
- "strings"
-
- "code.gitea.io/gitea/modules/timeutil"
- )
-
- type DatasetReference struct {
- ID int64 `xorm:"pk autoincr"`
- RepoID int64 `xorm:"INDEX unique"`
- DatasetID string `xorm:"TEXT"`
- CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
- }
-
- func GetDatasetIdsByRepoID(repoID int64) []int64 {
- var datasets []int64
- var datasetIds []string
- _ = x.Table("dataset_reference").Where("repo_id=?", repoID).
- Cols("dataset_reference.dataset_id").Find(&datasetIds)
- if len(datasetIds) > 0 {
- for _, datasetIdStr := range strings.Split(datasetIds[0], ",") {
- datasetId, err := strconv.ParseInt(datasetIdStr, 10, 64)
- if err != nil {
- continue
- }
- datasets = append(datasets, datasetId)
- }
- }
-
- return datasets
- }
-
- func HasReferenceDataset(repoID int64) bool {
-
- var datasetIds []string
- _ = x.Table("dataset_reference").Where("repo_id=?", repoID).
- Cols("dataset_reference.dataset_id").Find(&datasetIds)
- return len(datasetIds) > 0
- }
-
- func getReferenceDatasetStr(repoID int64) string {
-
- var datasetIds []string
- _ = x.Table("dataset_reference").Where("repo_id=?", repoID).
- Cols("dataset_reference.dataset_id").Find(&datasetIds)
- if len(datasetIds) > 0 {
- return datasetIds[0]
- }
- return ""
- }
-
- func DeleteReferenceDatasetIdsByRepoID(repoID int64) error {
-
- _, err := x.Exec("delete from dataset_reference where repo_id=?", repoID)
- return err
- }
-
- func NewDatasetIdsByRepoID(repoID int64, datasetIds []int64) error {
- if len(datasetIds) == 0 { //关联数据集数组为空
- DeleteReferenceDatasetIdsByRepoID(repoID)
- }
- var datasetsStrArray []string
- for _, datasetId := range datasetIds {
- datasetsStrArray = append(datasetsStrArray, strconv.FormatInt(datasetId, 10))
- }
-
- newDatasetStr := strings.Join(datasetsStrArray, ",")
- oldDatasetStr := getReferenceDatasetStr(repoID)
- if newDatasetStr == oldDatasetStr { //关联数据集无变化,不需要处理
- return nil
- }
- if oldDatasetStr != "" { //已经存在关联数据集
- _, err := x.Exec("update dataset_reference set dataset_id=? where repo_id=?", newDatasetStr, repoID)
-
- return err
- } else {
- datasetReference := DatasetReference{
- DatasetID: newDatasetStr,
- RepoID: repoID,
- }
-
- _, err := x.Insert(datasetReference)
- return err
- }
-
- }
|