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_star.go 2.1 kB

3 years ago
3 years ago
3 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package models
  2. import "code.gitea.io/gitea/modules/timeutil"
  3. type DatasetStar struct {
  4. ID int64 `xorm:"pk autoincr"`
  5. UID int64 `xorm:"UNIQUE(s)"`
  6. DatasetID int64 `xorm:"UNIQUE(s)"`
  7. CreatedUnix timeutil.TimeStamp `xorm:"created"`
  8. }
  9. // StarRepo or unstar repository.
  10. func StarDataset(userID, datasetID int64, star bool) error {
  11. sess := x.NewSession()
  12. defer sess.Close()
  13. if err := sess.Begin(); err != nil {
  14. return err
  15. }
  16. if star {
  17. if isDatasetStaring(sess, userID, datasetID) {
  18. return nil
  19. }
  20. if _, err := sess.Insert(&DatasetStar{UID: userID, DatasetID: datasetID}); err != nil {
  21. return err
  22. }
  23. if _, err := sess.Exec("UPDATE `dataset` SET num_stars = num_stars + 1 WHERE id = ?", datasetID); err != nil {
  24. return err
  25. }
  26. if _, err := sess.Exec("UPDATE `user` SET num_dataset_stars = num_dataset_stars + 1 WHERE id = ?", userID); err != nil {
  27. return err
  28. }
  29. } else {
  30. if !isDatasetStaring(sess, userID, datasetID) {
  31. return nil
  32. }
  33. if _, err := sess.Delete(&DatasetStar{0, userID, datasetID, 0}); err != nil {
  34. return err
  35. }
  36. if _, err := sess.Exec("UPDATE `dataset` SET num_stars = num_stars - 1 WHERE id = ?", datasetID); err != nil {
  37. return err
  38. }
  39. if _, err := sess.Exec("UPDATE `user` SET num_dataset_stars = num_dataset_stars - 1 WHERE id = ?", userID); err != nil {
  40. return err
  41. }
  42. }
  43. return sess.Commit()
  44. }
  45. func IsDatasetStaringByRepoId(userID, repoID int64) bool {
  46. dataset, _ := GetDatasetByRepo(&Repository{ID: repoID})
  47. if dataset == nil {
  48. return false
  49. }
  50. return isDatasetStaring(x, userID, dataset.ID)
  51. }
  52. func IsDatasetStaring(userID, datasetID int64) bool {
  53. return isDatasetStaring(x, userID, datasetID)
  54. }
  55. func isDatasetStaring(e Engine, userID, datasetID int64) bool {
  56. has, _ := e.Get(&DatasetStar{0, userID, datasetID, 0})
  57. return has
  58. }
  59. func GetDatasetIdsStarByUser(userID int64) []int64 {
  60. var datasets []int64
  61. _ = x.Table("dataset_star").Where("uid=?", userID).
  62. Cols("dataset_star.dataset_id").Find(&datasets)
  63. return datasets
  64. }