mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-30 00:36:14 -06:00
initialize maps outside loops and place into singular enum mapping creation func
This commit is contained in:
parent
dbffd57651
commit
79c0c3a4a9
2 changed files with 41 additions and 32 deletions
|
|
@ -20,7 +20,6 @@ package migrations
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
new_gtsmodel "github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||||
|
|
||||||
oldmodel "github.com/superseriousbusiness/gotosocial/internal/db/bundb/migrations/20240620074530_interaction_policy"
|
oldmodel "github.com/superseriousbusiness/gotosocial/internal/db/bundb/migrations/20240620074530_interaction_policy"
|
||||||
|
|
@ -162,20 +161,14 @@ func init() {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the mapping of old enum string values to new integer values.
|
||||||
|
visibilityMapping := visibilityEnumMapping[oldmodel.Visibility]()
|
||||||
|
|
||||||
// For each status found in this way, update
|
// For each status found in this way, update
|
||||||
// to new version of interaction policy.
|
// to new version of interaction policy.
|
||||||
for _, oldStatus := range oldStatuses {
|
for _, oldStatus := range oldStatuses {
|
||||||
// Start with default policy for this visibility.
|
// Start with default policy for this visibility.
|
||||||
v := func() gtsmodel.Visibility {
|
v := visibilityMapping[oldStatus.Visibility]
|
||||||
return map[oldmodel.Visibility]gtsmodel.Visibility{
|
|
||||||
oldmodel.VisibilityNone: new_gtsmodel.VisibilityNone,
|
|
||||||
oldmodel.VisibilityPublic: new_gtsmodel.VisibilityPublic,
|
|
||||||
oldmodel.VisibilityUnlocked: new_gtsmodel.VisibilityUnlocked,
|
|
||||||
oldmodel.VisibilityFollowersOnly: new_gtsmodel.VisibilityFollowersOnly,
|
|
||||||
oldmodel.VisibilityMutualsOnly: new_gtsmodel.VisibilityMutualsOnly,
|
|
||||||
oldmodel.VisibilityDirect: new_gtsmodel.VisibilityDirect,
|
|
||||||
}[oldStatus.Visibility]
|
|
||||||
}()
|
|
||||||
policy := gtsmodel.DefaultInteractionPolicyFor(v)
|
policy := gtsmodel.DefaultInteractionPolicyFor(v)
|
||||||
|
|
||||||
if !*oldStatus.Likeable {
|
if !*oldStatus.Likeable {
|
||||||
|
|
|
||||||
|
|
@ -78,17 +78,13 @@ func init() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the mapping of old enum string values to new integer values.
|
||||||
|
visibilityMapping := visibilityEnumMapping[old_gtsmodel.Visibility]()
|
||||||
|
|
||||||
// Convert all visibility tables.
|
// Convert all visibility tables.
|
||||||
for _, table := range visTables {
|
for _, table := range visTables {
|
||||||
if err := convertEnums(ctx, tx, table.Table, table.Column,
|
if err := convertEnums(ctx, tx, table.Table, table.Column,
|
||||||
map[old_gtsmodel.Visibility]new_gtsmodel.Visibility{
|
visibilityMapping, table.Default); err != nil {
|
||||||
old_gtsmodel.VisibilityNone: new_gtsmodel.VisibilityNone,
|
|
||||||
old_gtsmodel.VisibilityPublic: new_gtsmodel.VisibilityPublic,
|
|
||||||
old_gtsmodel.VisibilityUnlocked: new_gtsmodel.VisibilityUnlocked,
|
|
||||||
old_gtsmodel.VisibilityFollowersOnly: new_gtsmodel.VisibilityFollowersOnly,
|
|
||||||
old_gtsmodel.VisibilityMutualsOnly: new_gtsmodel.VisibilityMutualsOnly,
|
|
||||||
old_gtsmodel.VisibilityDirect: new_gtsmodel.VisibilityDirect,
|
|
||||||
}, table.Default); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -107,21 +103,12 @@ func init() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the mapping of old enum string values to the new integer value types.
|
||||||
|
notificationMapping := notificationEnumMapping[old_gtsmodel.NotificationType]()
|
||||||
|
|
||||||
// Migrate over old notifications table column over to new column type.
|
// Migrate over old notifications table column over to new column type.
|
||||||
if err := convertEnums(ctx, tx, "notifications", "notification_type", //nolint:revive
|
if err := convertEnums(ctx, tx, "notifications", "notification_type", //nolint:revive
|
||||||
map[old_gtsmodel.NotificationType]new_gtsmodel.NotificationType{
|
notificationMapping, nil); err != nil {
|
||||||
old_gtsmodel.NotificationFollow: new_gtsmodel.NotificationFollow,
|
|
||||||
old_gtsmodel.NotificationFollowRequest: new_gtsmodel.NotificationFollowRequest,
|
|
||||||
old_gtsmodel.NotificationMention: new_gtsmodel.NotificationMention,
|
|
||||||
old_gtsmodel.NotificationReblog: new_gtsmodel.NotificationReblog,
|
|
||||||
old_gtsmodel.NotificationFave: new_gtsmodel.NotificationFave,
|
|
||||||
old_gtsmodel.NotificationPoll: new_gtsmodel.NotificationPoll,
|
|
||||||
old_gtsmodel.NotificationStatus: new_gtsmodel.NotificationStatus,
|
|
||||||
old_gtsmodel.NotificationSignup: new_gtsmodel.NotificationSignup,
|
|
||||||
old_gtsmodel.NotificationPendingFave: new_gtsmodel.NotificationPendingFave,
|
|
||||||
old_gtsmodel.NotificationPendingReply: new_gtsmodel.NotificationPendingReply,
|
|
||||||
old_gtsmodel.NotificationPendingReblog: new_gtsmodel.NotificationPendingReblog,
|
|
||||||
}, nil); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -230,3 +217,32 @@ func convertEnums[OldType ~string, NewType ~int](
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// visibilityEnumMapping maps old Visibility enum values to their newer integer type.
|
||||||
|
func visibilityEnumMapping[T ~string]() map[T]new_gtsmodel.Visibility {
|
||||||
|
return map[T]new_gtsmodel.Visibility{
|
||||||
|
T(old_gtsmodel.VisibilityNone): new_gtsmodel.VisibilityNone,
|
||||||
|
T(old_gtsmodel.VisibilityPublic): new_gtsmodel.VisibilityPublic,
|
||||||
|
T(old_gtsmodel.VisibilityUnlocked): new_gtsmodel.VisibilityUnlocked,
|
||||||
|
T(old_gtsmodel.VisibilityFollowersOnly): new_gtsmodel.VisibilityFollowersOnly,
|
||||||
|
T(old_gtsmodel.VisibilityMutualsOnly): new_gtsmodel.VisibilityMutualsOnly,
|
||||||
|
T(old_gtsmodel.VisibilityDirect): new_gtsmodel.VisibilityDirect,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// notificationEnumMapping maps old NotificationType enum values to their newer integer type.
|
||||||
|
func notificationEnumMapping[T ~string]() map[T]new_gtsmodel.NotificationType {
|
||||||
|
return map[T]new_gtsmodel.NotificationType{
|
||||||
|
T(old_gtsmodel.NotificationFollow): new_gtsmodel.NotificationFollow,
|
||||||
|
T(old_gtsmodel.NotificationFollowRequest): new_gtsmodel.NotificationFollowRequest,
|
||||||
|
T(old_gtsmodel.NotificationMention): new_gtsmodel.NotificationMention,
|
||||||
|
T(old_gtsmodel.NotificationReblog): new_gtsmodel.NotificationReblog,
|
||||||
|
T(old_gtsmodel.NotificationFave): new_gtsmodel.NotificationFave,
|
||||||
|
T(old_gtsmodel.NotificationPoll): new_gtsmodel.NotificationPoll,
|
||||||
|
T(old_gtsmodel.NotificationStatus): new_gtsmodel.NotificationStatus,
|
||||||
|
T(old_gtsmodel.NotificationSignup): new_gtsmodel.NotificationSignup,
|
||||||
|
T(old_gtsmodel.NotificationPendingFave): new_gtsmodel.NotificationPendingFave,
|
||||||
|
T(old_gtsmodel.NotificationPendingReply): new_gtsmodel.NotificationPendingReply,
|
||||||
|
T(old_gtsmodel.NotificationPendingReblog): new_gtsmodel.NotificationPendingReblog,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue