You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

dataset_reference.go 2.3 kB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package models
  2. import (
  3. "strconv"
  4. "strings"
  5. "code.gitea.io/gitea/modules/timeutil"
  6. )
  7. type DatasetReference struct {
  8. ID int64 `xorm:"pk autoincr"`
  9. RepoID int64 `xorm:"INDEX unique"`
  10. DatasetID string `xorm:"TEXT"`
  11. CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
  12. }
  13. func GetDatasetIdsByRepoID(repoID int64) []int64 {
  14. var datasets []int64
  15. var datasetIds []string
  16. _ = x.Table("dataset_reference").Where("repo_id=?", repoID).
  17. Cols("dataset_reference.dataset_id").Find(&datasetIds)
  18. if len(datasetIds) > 0 {
  19. for _, datasetIdStr := range strings.Split(datasetIds[0], ",") {
  20. datasetId, err := strconv.ParseInt(datasetIdStr, 10, 64)
  21. if err != nil {
  22. continue
  23. }
  24. datasets = append(datasets, datasetId)
  25. }
  26. }
  27. return datasets
  28. }
  29. func HasReferenceDataset(repoID int64) bool {
  30. var datasetIds []string
  31. _ = x.Table("dataset_reference").Where("repo_id=?", repoID).
  32. Cols("dataset_reference.dataset_id").Find(&datasetIds)
  33. return len(datasetIds) > 0
  34. }
  35. func getReferenceDatasetStr(repoID int64) string {
  36. var datasetIds []string
  37. _ = x.Table("dataset_reference").Where("repo_id=?", repoID).
  38. Cols("dataset_reference.dataset_id").Find(&datasetIds)
  39. if len(datasetIds) > 0 {
  40. return datasetIds[0]
  41. }
  42. return ""
  43. }
  44. func DeleteReferenceDatasetIdsByRepoID(repoID int64) error {
  45. _, err := x.Exec("delete from dataset_reference where repo_id=?", repoID)
  46. return err
  47. }
  48. func NewDatasetIdsByRepoID(repoID int64, datasetIds []int64) error {
  49. if len(datasetIds) == 0 { //关联数据集数组为空
  50. DeleteReferenceDatasetIdsByRepoID(repoID)
  51. }
  52. var datasetsStrArray []string
  53. for _, datasetId := range datasetIds {
  54. datasetsStrArray = append(datasetsStrArray, strconv.FormatInt(datasetId, 10))
  55. }
  56. newDatasetStr := strings.Join(datasetsStrArray, ",")
  57. oldDatasetStr := getReferenceDatasetStr(repoID)
  58. if newDatasetStr == oldDatasetStr { //关联数据集无变化,不需要处理
  59. return nil
  60. }
  61. if oldDatasetStr != "" { //已经存在关联数据集
  62. _, err := x.Exec("update dataset_reference set dataset_id=? where repo_id=?", newDatasetStr, repoID)
  63. return err
  64. } else {
  65. datasetReference := DatasetReference{
  66. DatasetID: newDatasetStr,
  67. RepoID: repoID,
  68. }
  69. _, err := x.Insert(datasetReference)
  70. return err
  71. }
  72. }