Skip to content

Commit

Permalink
feat(badge): init badge update data
Browse files Browse the repository at this point in the history
  • Loading branch information
kumfo committed Aug 1, 2024
1 parent dc56fce commit 37981c1
Show file tree
Hide file tree
Showing 9 changed files with 159 additions and 34 deletions.
2 changes: 1 addition & 1 deletion i18n/en_US.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ backend:
tooltip:
other: "{{ .Names }} and {{ .Count }} more..."
badge:
badges:
default_badges:
autobiographer:
name:
other: Autobiographer
Expand Down
3 changes: 0 additions & 3 deletions internal/base/constant/object_type.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ const (
ReportObjectType = "report"
BadgeObjectType = "badge"
BadgeAwardObjectType = "badge_award"
BadgeGroupObjectType = "badge_group"
)

var (
Expand All @@ -43,7 +42,6 @@ var (
ReportObjectType: 8,
BadgeObjectType: 9,
BadgeAwardObjectType: 10,
BadgeGroupObjectType: 11,
}

ObjectTypeNumberMapping = map[int]string{
Expand All @@ -56,6 +54,5 @@ var (
8: ReportObjectType,
9: BadgeObjectType,
10: BadgeAwardObjectType,
11: BadgeGroupObjectType,
}
)
7 changes: 4 additions & 3 deletions internal/entity/badge.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ package entity
import "time"

const (
BadgeStatusAvailable = 1
BadgeStatusDeleted = 10
BadgeStatusActive = 1
BadgeStatusDeleted = 10
BadgeStatusInactive = 11

BadgeLevelBronze = 1
BadgeLevelSilver = 2
Expand Down Expand Up @@ -52,6 +53,6 @@ type Badge struct {
}

// TableName badge table name
func (*Badge) TableName() string {
func (Badge) TableName() string {
return "badge"
}
2 changes: 1 addition & 1 deletion internal/entity/badge_award.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,6 @@ type BadgeAward struct {
}

// TableName badge_award table name
func (*BadgeAward) TableName() string {
func (BadgeAward) TableName() string {
return "badge_award"
}
2 changes: 1 addition & 1 deletion internal/entity/badge_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ type BadgeGroup struct {
}

// TableName badge_group table name
func (*BadgeGroup) TableName() string {
func (BadgeGroup) TableName() string {
return "badge_group"
}
21 changes: 21 additions & 0 deletions internal/migrations/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ func (m *Mentor) InitDB() error {
m.do("init version table", m.initVersionTable)
m.do("init admin user", m.initAdminUser)
m.do("init config", m.initConfig)
m.do("init badge", m.initBadge)
m.do("init default privileges config", m.initDefaultRankPrivileges)
m.do("init role", m.initRole)
m.do("init power", m.initPower)
Expand Down Expand Up @@ -126,6 +127,26 @@ func (m *Mentor) initConfig() {
_, m.err = m.engine.Context(m.ctx).Insert(defaultConfigTable)
}

// initBadge init badge's table and data
func (m *Mentor) initBadge() {
uniqueIDRepo := unique.NewUniqueIDRepo(&data.Data{DB: m.engine})
_, m.err = m.engine.Context(m.ctx).Insert(defaultBadgeGroupTable)
if m.err != nil {
return
}

for _, badge := range defaultBadgeTable {
badge.ID, m.err = uniqueIDRepo.GenUniqueIDStr(m.ctx, entity.Badge{}.TableName())
if m.err != nil {
return
}
_, m.err = m.engine.Context(m.ctx).Insert(badge)
if m.err != nil {
return
}
}
}

func (m *Mentor) initDefaultRankPrivileges() {
chooseOption := schema.DefaultPrivilegeOptions.Choose(schema.PrivilegeLevel2)
for _, privilege := range chooseOption.Privileges {
Expand Down
3 changes: 3 additions & 0 deletions internal/migrations/init_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ var (
&entity.UserNotificationConfig{},
&entity.PluginUserConfig{},
&entity.Review{},
&entity.Badge{},
&entity.BadgeGroup{},
&entity.BadgeAward{},
}

roles = []*entity.Role{
Expand Down
1 change: 1 addition & 0 deletions internal/migrations/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ var migrations = []Migration{
NewMigration("v1.2.5", "add notification plugin and theme config", addNotificationPluginAndThemeConfig, true),
NewMigration("v1.3.0", "add review", addReview, false),
NewMigration("v1.3.6", "add hot score to question table", addQuestionHotScore, true),
NewMigration("v1.4.0", "add badge/badge_group/badge_award table", addBadges, true),
}

func GetMigrations() []Migration {
Expand Down
152 changes: 127 additions & 25 deletions internal/migrations/v22.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ package migrations

import (
"context"
"github.com/apache/incubator-answer/internal/base/data"
"github.com/apache/incubator-answer/internal/entity"
"github.com/apache/incubator-answer/internal/repo/unique"
"time"
"xorm.io/xorm"
)
Expand All @@ -37,11 +39,11 @@ var (
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.badges.autobiographer.name",
Name: "badge.default_badges.autobiographer.name",
Icon: "",
AwardCount: 0,
Description: "badge.badges.autobiographer.desc",
Status: entity.BadgeStatusAvailable,
Description: "badge.default_badges.autobiographer.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 1,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeSingleAward,
Expand All @@ -52,11 +54,11 @@ var (
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.badges.editor.name",
Name: "badge.default_badges.editor.name",
Icon: "",
AwardCount: 0,
Description: "badge.badges.editor.desc",
Status: entity.BadgeStatusAvailable,
Description: "badge.default_badges.editor.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 1,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeSingleAward,
Expand All @@ -67,11 +69,11 @@ var (
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.badges.first_flag.name",
Name: "badge.default_badges.first_flag.name",
Icon: "",
AwardCount: 0,
Description: "badge.badges.first_flag.desc",
Status: entity.BadgeStatusAvailable,
Description: "badge.default_badges.first_flag.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 1,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeSingleAward,
Expand All @@ -82,11 +84,11 @@ var (
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.badges.first_upvote.name",
Name: "badge.default_badges.first_upvote.name",
Icon: "",
AwardCount: 0,
Description: "badge.badges.first_upvote.desc",
Status: entity.BadgeStatusAvailable,
Description: "badge.default_badges.first_upvote.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 1,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeSingleAward,
Expand All @@ -97,11 +99,11 @@ var (
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.badges.first_reaction.name",
Name: "badge.default_badges.first_reaction.name",
Icon: "",
AwardCount: 0,
Description: "badge.badges.first_reaction.desc",
Status: entity.BadgeStatusAvailable,
Description: "badge.default_badges.first_reaction.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 1,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeSingleAward,
Expand All @@ -112,11 +114,11 @@ var (
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.badges.first_share.name",
Name: "badge.default_badges.first_share.name",
Icon: "",
AwardCount: 0,
Description: "badge.badges.first_share.desc",
Status: entity.BadgeStatusAvailable,
Description: "badge.default_badges.first_share.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 1,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeSingleAward,
Expand All @@ -127,11 +129,11 @@ var (
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.badges.scholar.name",
Name: "badge.default_badges.scholar.name",
Icon: "",
AwardCount: 0,
Description: "badge.badges.scholar.desc",
Status: entity.BadgeStatusAvailable,
Description: "badge.default_badges.scholar.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 1,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeSingleAward,
Expand All @@ -142,22 +144,113 @@ var (
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.badges.solved.name",
Name: "badge.default_badges.solved.name",
Icon: "",
AwardCount: 0,
Description: "badge.badges.solved.desc",
Status: entity.BadgeStatusAvailable,
Description: "badge.default_badges.solved.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 2,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeSingleAward,
Collect: "",
Handler: "",
Param: "",
},
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.default_badges.nice_answer.name",
Icon: "",
AwardCount: 0,
Description: "badge.default_badges.nice_answer.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 3,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeMultiAward,
Collect: "",
Handler: "",
Param: "",
},
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.default_badges.good_answer.name",
Icon: "",
AwardCount: 0,
Description: "badge.default_badges.good_answer.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 3,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeMultiAward,
Collect: "",
Handler: "",
Param: "",
},
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.default_badges.great_answer.name",
Icon: "",
AwardCount: 0,
Description: "badge.default_badges.great_answer.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 3,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeMultiAward,
Collect: "",
Handler: "",
Param: "",
},
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.default_badges.nice_question.name",
Icon: "",
AwardCount: 0,
Description: "badge.default_badges.nice_question.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 3,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeMultiAward,
Collect: "",
Handler: "",
Param: "",
},
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.default_badges.good_question.name",
Icon: "",
AwardCount: 0,
Description: "badge.default_badges.good_question.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 3,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeSingleAward,
Collect: "",
Handler: "",
Param: "",
},
{
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Name: "badge.default_badges.great_question.name",
Icon: "",
AwardCount: 0,
Description: "badge.default_badges.great_question.desc",
Status: entity.BadgeStatusActive,
BadgeGroupId: 3,
Level: entity.BadgeLevelBronze,
Single: entity.BadgeMultiAward,
Collect: "",
Handler: "",
Param: "",
},
}
)

func addBadges(ctx context.Context, x *xorm.Engine) (err error) {
uniqueIDRepo := unique.NewUniqueIDRepo(&data.Data{DB: x})
// create table
err = x.Context(ctx).Sync(new(entity.Badge))
if err != nil {
Expand All @@ -179,6 +272,15 @@ func addBadges(ctx context.Context, x *xorm.Engine) (err error) {
if err != nil {
return
}
_, err = x.Context(ctx).Insert(defaultBadgeTable)
for _, badge := range defaultBadgeTable {
badge.ID, err = uniqueIDRepo.GenUniqueIDStr(ctx, entity.Badge{}.TableName())
if err != nil {
return
}
_, err = x.Context(ctx).Insert(badge)
if err != nil {
return
}
}
return
}

0 comments on commit 37981c1

Please sign in to comment.