|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package models
-
- import (
- "code.gitea.io/gitea/modules/timeutil"
- "xorm.io/builder"
- )
-
- const (
- ActionAddBadgeUser = 1
- ActionDelBadgeUser = 2
- )
-
- type BadgeUser struct {
- ID int64 `xorm:"pk autoincr"`
- UserId int64 `xorm:"unique(user_id,badge_id)"`
- BadgeId int64 `xorm:"index"`
- CreatedUnix timeutil.TimeStamp `xorm:"created index"`
- }
-
- type BadgeUserLog struct {
- ID int64 `xorm:"pk autoincr"`
- UserId int64 `xorm:"index"`
- BadgeId int64 `xorm:"index"`
- Action int
- CreatedUnix timeutil.TimeStamp `xorm:"created index"`
- }
-
- type BadgeUserDetail struct {
- BadgeUser BadgeUser `xorm:"extends"`
- User User `xorm:"extends"`
- }
-
- func (*BadgeUserDetail) TableName() string {
- return "badge_user"
- }
-
- func (m *BadgeUserDetail) ToShow() *BadgeUser4SHow {
- return &BadgeUser4SHow{
- ID: m.BadgeUser.ID,
- UserId: m.BadgeUser.UserId,
- Name: m.User.Name,
- Avatar: m.User.RelAvatarLink(),
- Email: m.User.Email,
- CreatedUnix: m.BadgeUser.CreatedUnix,
- }
- }
-
- type BadgeUser4SHow struct {
- ID int64
- UserId int64
- Name string
- Avatar string
- Email string
- CreatedUnix timeutil.TimeStamp
- }
-
- type AddBadgeUsersReq struct {
- BadgeId int64
- Users string
- }
- type DelBadgeUserReq struct {
- ID int64
- }
-
- type GetUserBadgesOpts struct {
- CategoryId int64
- ListOptions
- }
-
- func AddBadgeUser(m BadgeUser) (int64, error) {
- sess := x.NewSession()
- defer sess.Close()
- sess.Begin()
- n, err := sess.Insert(&m)
- if err != nil || n == 0 {
- return 0, err
- }
- _, err = sess.Insert(&BadgeUserLog{
- UserId: m.UserId,
- BadgeId: m.BadgeId,
- Action: ActionAddBadgeUser,
- })
- if err != nil {
- sess.Rollback()
- return 0, err
- }
- return n, sess.Commit()
- }
-
- func DelBadgeUser(id int64) (int64, error) {
- m := BadgeUser{}
- has, err := x.ID(id).Get(&m)
- if err != nil {
- return 0, err
- }
- if !has {
- return 0, ErrRecordNotExist{}
- }
- sess := x.NewSession()
- defer sess.Close()
- sess.Begin()
- n, err := x.ID(m.ID).Delete(&BadgeUser{})
- if err != nil || n == 0 {
- return 0, err
- }
- _, err = sess.Insert(&BadgeUserLog{
- UserId: m.UserId,
- BadgeId: m.BadgeId,
- Action: ActionDelBadgeUser,
- })
- if err != nil {
- sess.Rollback()
- return 0, err
- }
- return n, sess.Commit()
- }
-
- func GetBadgeUsers(badgeId int64, opts ListOptions) ([]BadgeUserDetail, error) {
- if opts.Page <= 0 {
- opts.Page = 1
- }
- m := make([]BadgeUserDetail, 0)
- err := x.Join("LEFT", "public.user", "public.user.ID = badge_user.user_id").Where("badge_user.badge_id = ?", badgeId).OrderBy("badge_user.created_unix desc").Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).Find(&m)
- if err != nil {
- return nil, err
- }
- return m, nil
- }
-
- func GetUserBadges(userId int64, opts GetUserBadgesOpts) ([]*Badge, error) {
- cond := builder.NewCond()
- cond = cond.And(builder.Eq{"badge_user.user_id": userId})
- if opts.CategoryId > 0 {
- cond = cond.And(builder.Eq{"badge.category_id": opts.CategoryId})
- }
-
- r := make([]*Badge, 0)
- err := x.Join("INNER", "badge_user", "badge_user.badge_id = badge.id").Where(cond).OrderBy("badge_user.created_unix desc").Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).Find(&r)
- return r, err
- }
|