This is an automated email from the ASF dual-hosted git repository.

robin0716 pushed a commit to branch develop/robin
in repository https://gitbox.apache.org/repos/asf/incubator-answer.git

commit 577094d87407a208a16e0be45f5e0b106bba2489
Author: kumfo <ku...@sifou.com>
AuthorDate: Thu Aug 1 15:44:11 2024 +0800

    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 ce50578c..fa02ed80 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 eef952c4..e4ac3d20 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 7a375af7..976bb47d 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 01100b1f..235d369c 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 9953d067..3be4d820 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 a56216aa..40e9a91a 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 adbe7175..f9a09f52 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 463f68ed..a32e851a 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 20b1eb3c..d55a57d9 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
 }

Reply via email to