Skip to content

Commit

Permalink
Core: Fix expiration of migrated memberships.
Browse files Browse the repository at this point in the history
Removes Legacy 3 and 5 memberships in favour of 3/5 entries of LegacyWelcomerPro
  • Loading branch information
TheRockettek committed Aug 5, 2024
1 parent f8e5249 commit cdbc562
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 52 deletions.
34 changes: 25 additions & 9 deletions migration-service/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,13 @@ type UserInfo struct {
IP []string `json:"ip"`
}

func maxTime(a time.Time, b time.Time) time.Time {
if a.After(b) {
return a
}
return b
}

type BorderwallInfo struct {
Activated bool `json:"a"` // borderwall.activated
GuildID StringNumber `json:"gi"` // borderwall.guild_id
Expand Down Expand Up @@ -894,6 +901,7 @@ func migrateUserData(id int64, structure UserInfo) {
}()

nowUnix := time.Now().Unix()
memspiration := time.Time{}
// Create transactions

m, err := q.GetUserMembershipsByUserID(ctx, id)
Expand Down Expand Up @@ -938,11 +946,12 @@ func migrateUserData(id int64, structure UserInfo) {
StartedAt: time.Unix(int64(structure.Memberships.WelcomerPro1.Until), 0).AddDate(0, -1, 0),
ExpiresAt: time.Unix(int64(structure.Memberships.WelcomerPro1.Until), 0),
Status: utils.If(int64(structure.Memberships.WelcomerPro1.Until) > nowUnix, int32(database.MembershipStatusActive), int32(database.MembershipStatusExpired)),
MembershipType: int32(database.MembershipTypeLegacyWelcomerPro1),
MembershipType: int32(database.MembershipTypeLegacyWelcomerPro),
TransactionUuid: t.TransactionUuid,
UserID: id,
GuildID: 0,
})
memspiration = maxTime(memspiration, time.Unix(int64(structure.Memberships.WelcomerPro1.Until), 0))
if err != nil {
println("Cannot create new welcomer pro1 membership", id, err.Error())
} else {
Expand All @@ -967,11 +976,12 @@ func migrateUserData(id int64, structure UserInfo) {
StartedAt: time.Unix(int64(structure.Memberships.WelcomerPro3.Until), 0).AddDate(0, -1, 0),
ExpiresAt: time.Unix(int64(structure.Memberships.WelcomerPro3.Until), 0),
Status: utils.If(int64(structure.Memberships.WelcomerPro3.Until) > nowUnix, int32(database.MembershipStatusActive), int32(database.MembershipStatusExpired)),
MembershipType: int32(database.MembershipTypeLegacyWelcomerPro3),
MembershipType: int32(database.MembershipTypeLegacyWelcomerPro),
TransactionUuid: t.TransactionUuid,
UserID: id,
GuildID: 0,
})
memspiration = maxTime(memspiration, time.Unix(int64(structure.Memberships.WelcomerPro3.Until), 0))
if err != nil {
println("Cannot create new welcomer pro1 membership", id, err.Error())
} else {
Expand All @@ -997,11 +1007,12 @@ func migrateUserData(id int64, structure UserInfo) {
StartedAt: time.Unix(int64(structure.Memberships.WelcomerPro5.Until), 0).AddDate(0, -1, 0),
ExpiresAt: time.Unix(int64(structure.Memberships.WelcomerPro5.Until), 0),
Status: utils.If(int64(structure.Memberships.WelcomerPro5.Until) > nowUnix, int32(database.MembershipStatusActive), int32(database.MembershipStatusExpired)),
MembershipType: int32(database.MembershipTypeLegacyWelcomerPro5),
MembershipType: int32(database.MembershipTypeLegacyWelcomerPro),
TransactionUuid: t.TransactionUuid,
UserID: id,
GuildID: 0,
})
memspiration = maxTime(memspiration, time.Unix(int64(structure.Memberships.WelcomerPro5.Until), 0))
if err != nil {
println("Cannot create new welcomer pro5 membership", id, err.Error())
} else {
Expand All @@ -1027,11 +1038,12 @@ func migrateUserData(id int64, structure UserInfo) {
StartedAt: time.Unix(0, 0),
ExpiresAt: time.Unix(2147483647, 0),
Status: int32(database.MembershipStatusActive),
MembershipType: int32(database.MembershipTypeLegacyWelcomerPro5),
MembershipType: int32(database.MembershipTypeLegacyWelcomerPro),
TransactionUuid: t.TransactionUuid,
UserID: id,
GuildID: 0,
})
memspiration = maxTime(memspiration, time.Unix(2147483647, 0))
if err != nil {
println("Cannot create new welcomer parnter membership", id, err.Error())
} else {
Expand Down Expand Up @@ -1061,6 +1073,8 @@ func migrateUserData(id int64, structure UserInfo) {
}
}

println(len(transactions), len(memberships), id)

for _, sub := range structure.Memberships.Subscriptions {
switch sub.Type {
case "don":
Expand All @@ -1071,11 +1085,13 @@ func migrateUserData(id int64, structure UserInfo) {
memberships = memberships[1:]
transactions = transactions[1:]

println(len(memberships), len(transactions), sub.GuildID.AsInt64(), sub.Type)

_, err := q.CreateNewMembership(ctx, database.CreateNewMembershipParams{
StartedAt: time.Unix(0, 0),
ExpiresAt: time.Unix(2147483647, 0),
StartedAt: time.Now(),
ExpiresAt: memspiration,
Status: int32(database.MembershipStatusActive),
MembershipType: int32(database.MembershipTypeLegacyCustomBackgrounds),
MembershipType: int32(database.MembershipTypeLegacyWelcomerPro),
TransactionUuid: v,
UserID: id,
GuildID: sub.GuildID.AsInt64(),
Expand Down Expand Up @@ -1160,9 +1176,9 @@ var ctx context.Context
var client http.Client

func main() {
migrateGuilds := true
migrateGuilds := false
migrateUsers := true
migrateBorderwall := true
migrateBorderwall := false

guildMinValue := int64(839101942046916619)
userMinValue := int64(0)
Expand Down
6 changes: 1 addition & 5 deletions welcomer-backend/backend/routes_billing.go
Original file line number Diff line number Diff line change
Expand Up @@ -463,11 +463,7 @@ func paymentCallback(ctx *gin.Context) {
}

startedAt := time.Time{}

expiresAt := startedAt
if sku.MonthCount <= 0 {
expiresAt = startedAt.AddDate(0, utils.If(sku.MonthCount < 0, 120, sku.MonthCount), 0)
}
expiresAt := startedAt.AddDate(0, utils.If(sku.MonthCount < 0, 120, sku.MonthCount), 0)

// Create a new membership for the user.
_, err = queries.CreateNewMembership(backend.ctx, database.CreateNewMembershipParams{
Expand Down
8 changes: 2 additions & 6 deletions welcomer-core/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,11 @@ func CheckGuildMemberships(memberships []*database.GetUserMembershipsByGuildIDRo
}

func IsCustomBackgroundsMembership(membershipType database.MembershipType) bool {
return membershipType == database.MembershipTypeLegacyCustomBackgrounds ||
membershipType == database.MembershipTypeCustomBackgrounds
return membershipType == database.MembershipTypeLegacyCustomBackgrounds || membershipType == database.MembershipTypeCustomBackgrounds
}

func IsWelcomerProMembership(membershipType database.MembershipType) bool {
return membershipType == database.MembershipTypeLegacyWelcomerPro1 ||
membershipType == database.MembershipTypeLegacyWelcomerPro3 ||
membershipType == database.MembershipTypeLegacyWelcomerPro5 ||
membershipType == database.MembershipTypeWelcomerPro
return membershipType == database.MembershipTypeLegacyWelcomerPro || membershipType == database.MembershipTypeWelcomerPro
}

func MemberHasElevation(discordGuild discord.Guild, member discord.GuildMember) bool {
Expand Down
2 changes: 1 addition & 1 deletion welcomer-core/database/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ type ScienceGuildEventType int32
// ENUM(unknown, idle, active, expired, refunded, removed)
type MembershipStatus int32

// ENUM(unknown, legacyCustomBackgrounds, legacyWelcomerPro1, legacyWelcomerPro3, legacyWelcomerPro5, welcomerPro, customBackgrounds)
// ENUM(unknown, legacyCustomBackgrounds, legacyWelcomerPro, welcomerPro, customBackgrounds)
type MembershipType int32

// ENUM(unknown, paypal, patreon, stripe)
Expand Down
97 changes: 72 additions & 25 deletions welcomer-core/database/database_enum.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit cdbc562

Please sign in to comment.