aboutsummaryrefslogtreecommitdiffstats
path: root/models/user
diff options
context:
space:
mode:
authortechknowlogick <techknowlogick@gitea.io>2022-08-17 19:25:25 -0400
committerGitHub <noreply@github.com>2022-08-18 02:25:25 +0300
commitd8e6c9912594dfa03d55a021d538b6b0bd0561ee (patch)
treebebedc28da71c6b284ea8a80b70cccf4d58d13d4 /models/user
parent208b4ee417c528f11583bb84f3f3481bfad12ac7 (diff)
downloadgitea-d8e6c9912594dfa03d55a021d538b6b0bd0561ee.tar.gz
gitea-d8e6c9912594dfa03d55a021d538b6b0bd0561ee.zip
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>
Diffstat (limited to 'models/user')
-rw-r--r--models/user/badge.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/models/user/badge.go b/models/user/badge.go
new file mode 100644
index 0000000000..5ff840cb8c
--- /dev/null
+++ b/models/user/badge.go
@@ -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
+}