From 37981c139b04a70d29a459ab3737a0df32bfc9f8 Mon Sep 17 00:00:00 2001 From: kumfo Date: Thu, 1 Aug 2024 15:44:11 +0800 Subject: [PATCH] feat(badge): init badge update data --- i18n/en_US.yaml | 2 +- internal/base/constant/object_type.go | 3 - internal/entity/badge.go | 7 +- internal/entity/badge_award.go | 2 +- internal/entity/badge_group.go | 2 +- internal/migrations/init.go | 21 ++++ internal/migrations/init_data.go | 3 + internal/migrations/migrations.go | 1 + internal/migrations/v22.go | 152 +++++++++++++++++++++----- 9 files changed, 159 insertions(+), 34 deletions(-) diff --git a/i18n/en_US.yaml b/i18n/en_US.yaml index bfe53305c..5cd065733 100644 --- a/i18n/en_US.yaml +++ b/i18n/en_US.yaml @@ -527,7 +527,7 @@ backend: tooltip: other: "{{ .Names }} and {{ .Count }} more..." badge: - badges: + default_badges: autobiographer: name: other: Autobiographer diff --git a/internal/base/constant/object_type.go b/internal/base/constant/object_type.go index eef952c44..e4ac3d20c 100644 --- a/internal/base/constant/object_type.go +++ b/internal/base/constant/object_type.go @@ -29,7 +29,6 @@ const ( ReportObjectType = "report" BadgeObjectType = "badge" BadgeAwardObjectType = "badge_award" - BadgeGroupObjectType = "badge_group" ) var ( @@ -43,7 +42,6 @@ var ( ReportObjectType: 8, BadgeObjectType: 9, BadgeAwardObjectType: 10, - BadgeGroupObjectType: 11, } ObjectTypeNumberMapping = map[int]string{ @@ -56,6 +54,5 @@ var ( 8: ReportObjectType, 9: BadgeObjectType, 10: BadgeAwardObjectType, - 11: BadgeGroupObjectType, } ) diff --git a/internal/entity/badge.go b/internal/entity/badge.go index 7a375af7d..976bb47d0 100644 --- a/internal/entity/badge.go +++ b/internal/entity/badge.go @@ -22,8 +22,9 @@ package entity import "time" const ( - BadgeStatusAvailable = 1 - BadgeStatusDeleted = 10 + BadgeStatusActive = 1 + BadgeStatusDeleted = 10 + BadgeStatusInactive = 11 BadgeLevelBronze = 1 BadgeLevelSilver = 2 @@ -52,6 +53,6 @@ type Badge struct { } // TableName badge table name -func (*Badge) TableName() string { +func (Badge) TableName() string { return "badge" } diff --git a/internal/entity/badge_award.go b/internal/entity/badge_award.go index 01100b1f2..235d369c2 100644 --- a/internal/entity/badge_award.go +++ b/internal/entity/badge_award.go @@ -34,6 +34,6 @@ type BadgeAward struct { } // TableName badge_award table name -func (*BadgeAward) TableName() string { +func (BadgeAward) TableName() string { return "badge_award" } diff --git a/internal/entity/badge_group.go b/internal/entity/badge_group.go index 9953d067d..3be4d8209 100644 --- a/internal/entity/badge_group.go +++ b/internal/entity/badge_group.go @@ -30,6 +30,6 @@ type BadgeGroup struct { } // TableName badge_group table name -func (*BadgeGroup) TableName() string { +func (BadgeGroup) TableName() string { return "badge_group" } diff --git a/internal/migrations/init.go b/internal/migrations/init.go index a56216aab..40e9a91a4 100644 --- a/internal/migrations/init.go +++ b/internal/migrations/init.go @@ -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) @@ -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 { diff --git a/internal/migrations/init_data.go b/internal/migrations/init_data.go index adbe71753..f9a09f52a 100644 --- a/internal/migrations/init_data.go +++ b/internal/migrations/init_data.go @@ -69,6 +69,9 @@ var ( &entity.UserNotificationConfig{}, &entity.PluginUserConfig{}, &entity.Review{}, + &entity.Badge{}, + &entity.BadgeGroup{}, + &entity.BadgeAward{}, } roles = []*entity.Role{ diff --git a/internal/migrations/migrations.go b/internal/migrations/migrations.go index 463f68ed8..a32e851a7 100644 --- a/internal/migrations/migrations.go +++ b/internal/migrations/migrations.go @@ -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 { diff --git a/internal/migrations/v22.go b/internal/migrations/v22.go index 20b1eb3c4..d55a57d9d 100644 --- a/internal/migrations/v22.go +++ b/internal/migrations/v22.go @@ -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" ) @@ -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, @@ -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, @@ -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, @@ -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, @@ -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, @@ -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, @@ -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, @@ -142,11 +144,11 @@ 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, @@ -154,10 +156,101 @@ var ( 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 { @@ -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 }