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.

badge.go 3.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package models
  2. import (
  3. "code.gitea.io/gitea/modules/timeutil"
  4. "xorm.io/builder"
  5. )
  6. type Badge struct {
  7. ID int64 `xorm:"pk autoincr"`
  8. Name string
  9. LightedIcon string `xorm:"varchar(2048)"`
  10. GreyedIcon string `xorm:"varchar(2048)"`
  11. Url string `xorm:"varchar(2048)"`
  12. CategoryId int64
  13. CreatedUnix timeutil.TimeStamp `xorm:"created"`
  14. UpdatedUnix timeutil.TimeStamp `xorm:"updated"`
  15. DeletedAt timeutil.TimeStamp `xorm:"deleted"`
  16. }
  17. func (m *Badge) ToUserShow() *Badge4UserShow {
  18. return &Badge4UserShow{
  19. Name: m.Name,
  20. LightedIcon: m.LightedIcon,
  21. GreyedIcon: m.GreyedIcon,
  22. Url: m.Url,
  23. }
  24. }
  25. type GetBadgeOpts struct {
  26. BadgeType BadgeType
  27. }
  28. type BadgeAndCategory struct {
  29. Badge Badge `xorm:"extends"`
  30. Category BadgeCategory `xorm:"extends"`
  31. }
  32. func (*BadgeAndCategory) TableName() string {
  33. return "badge"
  34. }
  35. func (m *BadgeAndCategory) ToShow() *Badge4AdminShow {
  36. return &Badge4AdminShow{
  37. ID: m.Badge.ID,
  38. Name: m.Badge.Name,
  39. LightedIcon: m.Badge.LightedIcon,
  40. GreyedIcon: m.Badge.GreyedIcon,
  41. Url: m.Badge.Url,
  42. CategoryName: m.Category.Name,
  43. CategoryId: m.Category.ID,
  44. CreatedUnix: m.Badge.CreatedUnix,
  45. UpdatedUnix: m.Badge.UpdatedUnix,
  46. }
  47. }
  48. type Badge4AdminShow struct {
  49. ID int64
  50. Name string
  51. LightedIcon string
  52. GreyedIcon string
  53. Url string
  54. CategoryName string
  55. CategoryId int64
  56. CreatedUnix timeutil.TimeStamp
  57. UpdatedUnix timeutil.TimeStamp
  58. }
  59. func (m Badge4AdminShow) ToDTO() Badge {
  60. return Badge{
  61. Name: m.Name,
  62. LightedIcon: m.LightedIcon,
  63. GreyedIcon: m.GreyedIcon,
  64. Url: m.Url,
  65. CategoryId: m.CategoryId,
  66. }
  67. }
  68. type Badge4UserShow struct {
  69. Name string
  70. LightedIcon string
  71. GreyedIcon string
  72. Url string
  73. }
  74. type BadgeShowWithStatus struct {
  75. Badge *Badge4UserShow
  76. IsLighted bool
  77. }
  78. type UserAllBadgeInCategory struct {
  79. CategoryName string
  80. CategoryId int64
  81. LightedNum int
  82. Badges []*BadgeShowWithStatus
  83. }
  84. func GetBadgeList(opts GetBadgeOpts) ([]*BadgeAndCategory, error) {
  85. var cond = builder.NewCond()
  86. if opts.BadgeType > 0 {
  87. cond = cond.And(builder.Eq{"badge_category.type": opts.BadgeType})
  88. }
  89. r := make([]*BadgeAndCategory, 0)
  90. if err := x.Join("INNER", "badge_category", "badge_category.ID = badge.category_id").Where(cond).OrderBy("badge.created_unix desc").Find(&r); err != nil {
  91. return nil, err
  92. }
  93. return r, nil
  94. }
  95. func AddBadge(m Badge) (int64, error) {
  96. return x.Insert(&m)
  97. }
  98. func UpdateBadgeById(id int64, param Badge) (int64, error) {
  99. return x.ID(id).Update(&param)
  100. }
  101. func DelBadge(id int64) (int64, error) {
  102. return x.ID(id).Delete(&Badge{})
  103. }
  104. func GetBadgeById(id int64) (*Badge, error) {
  105. m := &Badge{}
  106. has, err := x.ID(id).Get(m)
  107. if err != nil {
  108. return nil, err
  109. } else if !has {
  110. return nil, &ErrRecordNotExist{}
  111. }
  112. return m, nil
  113. }
  114. func GetBadgeByCategoryId(categoryId int64) ([]*Badge, error) {
  115. r := make([]*Badge, 0)
  116. err := x.Where("category_id = ?", categoryId).Find(&r)
  117. return r, err
  118. }