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>tokarchuk/v1.18
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