Merge branch 'staging' into hotfix/deployment

This commit is contained in:
efrilm
2026-09-30 17:04:36 +07:00
5 changed files with 51 additions and 8 deletions
+21
View File
@@ -16,6 +16,27 @@ const (
CampaignTypeMixed CampaignType = "MIXED" CampaignTypeMixed CampaignType = "MIXED"
) )
// legacyCampaignTokens is what COINS was called before tokens became EnakCoin
// (docs/prd-point-coin.md §10). Requests may still send it; it is stored as COINS.
const legacyCampaignTokens = "TOKENS"
// NormalizeCampaignType maps the legacy TOKENS to COINS and leaves anything else as is.
func NormalizeCampaignType(t string) CampaignType {
if t == legacyCampaignTokens {
return CampaignTypeCoins
}
return CampaignType(t)
}
// NormalizeCampaignRewardType maps the legacy TOKENS to COINS and leaves anything
// else as is.
func NormalizeCampaignRewardType(t string) CampaignRewardType {
if t == legacyCampaignTokens {
return CampaignRewardTypeCoins
}
return CampaignRewardType(t)
}
type RuleType string type RuleType string
const ( const (
+18
View File
@@ -0,0 +1,18 @@
package entities
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestNormalizeCampaignTypesMapsLegacyTokensToCoins(t *testing.T) {
assert.Equal(t, CampaignTypeCoins, NormalizeCampaignType("TOKENS"))
assert.Equal(t, CampaignTypeCoins, NormalizeCampaignType("COINS"))
assert.Equal(t, CampaignTypePoints, NormalizeCampaignType("POINTS"))
assert.Equal(t, CampaignType(""), NormalizeCampaignType(""), "an empty filter stays empty")
assert.Equal(t, CampaignRewardTypeCoins, NormalizeCampaignRewardType("TOKENS"))
assert.Equal(t, CampaignRewardTypeReward, NormalizeCampaignRewardType("REWARD"))
assert.Equal(t, CampaignRewardType(""), NormalizeCampaignRewardType(""))
}
+4 -4
View File
@@ -71,7 +71,7 @@ func ToCampaignEntity(request *contract.CreateCampaignRequest) *entities.Campaig
return &entities.Campaign{ return &entities.Campaign{
Name: request.Name, Name: request.Name,
Description: request.Description, Description: request.Description,
Type: entities.CampaignType(request.Type), Type: entities.NormalizeCampaignType(request.Type),
StartDate: request.StartDate, StartDate: request.StartDate,
EndDate: request.EndDate, EndDate: request.EndDate,
IsActive: request.IsActive, IsActive: request.IsActive,
@@ -91,7 +91,7 @@ func ToCampaignEntityFromUpdate(request *contract.UpdateCampaignRequest) *entiti
ID: request.ID, ID: request.ID,
Name: request.Name, Name: request.Name,
Description: request.Description, Description: request.Description,
Type: entities.CampaignType(request.Type), Type: entities.NormalizeCampaignType(request.Type),
StartDate: request.StartDate, StartDate: request.StartDate,
EndDate: request.EndDate, EndDate: request.EndDate,
IsActive: request.IsActive, IsActive: request.IsActive,
@@ -118,7 +118,7 @@ func ToCampaignRuleEntity(request *contract.CampaignRuleStruct, campaignID uuid.
CampaignID: campaignID, CampaignID: campaignID,
RuleType: entities.RuleType(request.RuleType), RuleType: entities.RuleType(request.RuleType),
ConditionValue: request.ConditionValue, ConditionValue: request.ConditionValue,
RewardType: entities.CampaignRewardType(request.RewardType), RewardType: entities.NormalizeCampaignRewardType(request.RewardType),
RewardValue: request.RewardValue, RewardValue: request.RewardValue,
RewardSubtype: rewardSubtype, RewardSubtype: rewardSubtype,
RewardRefID: request.RewardRefID, RewardRefID: request.RewardRefID,
@@ -142,7 +142,7 @@ func ToCampaignRuleEntityFromUpdate(request *contract.CampaignRuleStruct, campai
CampaignID: campaignID, CampaignID: campaignID,
RuleType: entities.RuleType(request.RuleType), RuleType: entities.RuleType(request.RuleType),
ConditionValue: request.ConditionValue, ConditionValue: request.ConditionValue,
RewardType: entities.CampaignRewardType(request.RewardType), RewardType: entities.NormalizeCampaignRewardType(request.RewardType),
RewardValue: request.RewardValue, RewardValue: request.RewardValue,
RewardSubtype: rewardSubtype, RewardSubtype: rewardSubtype,
RewardRefID: request.RewardRefID, RewardRefID: request.RewardRefID,
+4 -4
View File
@@ -70,7 +70,7 @@ func (p *campaignProcessor) ListCampaigns(ctx context.Context, req *contract.Lis
Page: req.Page, Page: req.Page,
Limit: req.Limit, Limit: req.Limit,
Search: req.Search, Search: req.Search,
Type: req.Type, Type: string(entities.NormalizeCampaignType(req.Type)),
IsActive: req.IsActive, IsActive: req.IsActive,
ShowOnApp: req.ShowOnApp, ShowOnApp: req.ShowOnApp,
StartDate: req.StartDate, StartDate: req.StartDate,
@@ -178,7 +178,7 @@ func (p *campaignRuleProcessor) CreateCampaignRule(ctx context.Context, req *con
CampaignID: req.CampaignID, CampaignID: req.CampaignID,
RuleType: entities.RuleType(req.RuleType), RuleType: entities.RuleType(req.RuleType),
ConditionValue: req.ConditionValue, ConditionValue: req.ConditionValue,
RewardType: entities.CampaignRewardType(req.RewardType), RewardType: entities.NormalizeCampaignRewardType(req.RewardType),
RewardValue: req.RewardValue, RewardValue: req.RewardValue,
RewardSubtype: (*entities.RewardSubtype)(req.RewardSubtype), RewardSubtype: (*entities.RewardSubtype)(req.RewardSubtype),
RewardRefID: req.RewardRefID, RewardRefID: req.RewardRefID,
@@ -218,7 +218,7 @@ func (p *campaignRuleProcessor) ListCampaignRules(ctx context.Context, req *cont
Limit: req.Limit, Limit: req.Limit,
CampaignID: req.CampaignID, CampaignID: req.CampaignID,
RuleType: req.RuleType, RuleType: req.RuleType,
RewardType: req.RewardType, RewardType: string(entities.NormalizeCampaignRewardType(req.RewardType)),
} }
// Get from repository // Get from repository
@@ -247,7 +247,7 @@ func (p *campaignRuleProcessor) UpdateCampaignRule(ctx context.Context, req *con
CampaignID: req.CampaignID, CampaignID: req.CampaignID,
RuleType: entities.RuleType(req.RuleType), RuleType: entities.RuleType(req.RuleType),
ConditionValue: req.ConditionValue, ConditionValue: req.ConditionValue,
RewardType: entities.CampaignRewardType(req.RewardType), RewardType: entities.NormalizeCampaignRewardType(req.RewardType),
RewardValue: req.RewardValue, RewardValue: req.RewardValue,
RewardSubtype: (*entities.RewardSubtype)(req.RewardSubtype), RewardSubtype: (*entities.RewardSubtype)(req.RewardSubtype),
RewardRefID: req.RewardRefID, RewardRefID: req.RewardRefID,
@@ -99,6 +99,10 @@ func (p *GamePlayProcessor) ListGamePlays(ctx context.Context, query *models.Lis
} }
offset := (query.Page - 1) * query.Limit offset := (query.Page - 1) * query.Limit
// The column was renamed; the old name still sorts the same way.
if query.SortBy == "token_used" {
query.SortBy = "coins_used"
}
// Get game plays from repository // Get game plays from repository
gamePlays, total, err := p.gamePlayRepo.List( gamePlays, total, err := p.gamePlayRepo.List(