mirror of https://github.com/go-gitea/gitea.git
Add badge capabilities to users (#20607)
Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: John Olheiser <john.olheiser@gmail.com>pull/20840/head^2
parent
208b4ee417
commit
d8e6c99125
@ -0,0 +1,28 @@
|
||||
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
"xorm.io/xorm"
|
||||
)
|
||||
|
||||
func creatUserBadgesTable(x *xorm.Engine) error {
|
||||
type Badge struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
Description string
|
||||
ImageURL string
|
||||
}
|
||||
|
||||
type userBadge struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
BadgeID int64
|
||||
UserID int64 `xorm:"INDEX"`
|
||||
}
|
||||
|
||||
if err := x.Sync2(new(Badge)); err != nil {
|
||||
return err
|
||||
}
|
||||
return x.Sync2(new(userBadge))
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package user
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
)
|
||||
|
||||
// Badge represents a user badge
|
||||
type Badge struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
Description string
|
||||
ImageURL string
|
||||
}
|
||||
|
||||
// UserBadge represents a user badge
|
||||
type UserBadge struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
BadgeID int64
|
||||
UserID int64 `xorm:"INDEX"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
db.RegisterModel(new(Badge))
|
||||
db.RegisterModel(new(UserBadge))
|
||||
}
|
||||
|
||||
// GetUserBadges returns the user's badges.
|
||||
func GetUserBadges(ctx context.Context, u *User) ([]*Badge, int64, error) {
|
||||
sess := db.GetEngine(ctx).
|
||||
Select("`badge`.*").
|
||||
Join("INNER", "user_badge", "`user_badge`.badge_id=badge.id").
|
||||
Where("user_badge.user_id=?", u.ID)
|
||||
|
||||
badges := make([]*Badge, 0, 8)
|
||||
count, err := sess.FindAndCount(&badges)
|
||||
return badges, count, err
|
||||
}
|
Loading…
Reference in New Issue