[performance] convert enum strings to ints (#3558)

* convert statuses.visibility and notifications.notification_type columns from type string -> int for performance / space savings

* fix test trying to compare string to int

* fix instance count query using string literal instead of gtsmodel const type

* ensure a default value is always set

* also migrate the account settings and sin bin status tables

* initialize maps outside loops and place into singular enum mapping creation func

* use int16 for enum types

* update sinbinstatus creation to be from a snapshot at initial creation

* add snapshot of poll type at creation time
This commit is contained in:
kim 2024-11-25 13:48:59 +00:00 committed by GitHub
commit cac9d65029
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
32 changed files with 940 additions and 91 deletions

View file

@ -196,8 +196,8 @@ func (n *notificationDB) GetAccountNotifications(
sinceID string,
minID string,
limit int,
types []string,
excludeTypes []string,
types []gtsmodel.NotificationType,
excludeTypes []gtsmodel.NotificationType,
) ([]*gtsmodel.Notification, error) {
// Ensure reasonable
if limit < 0 {
@ -303,7 +303,7 @@ func (n *notificationDB) DeleteNotificationByID(ctx context.Context, id string)
return nil
}
func (n *notificationDB) DeleteNotifications(ctx context.Context, types []string, targetAccountID string, originAccountID string) error {
func (n *notificationDB) DeleteNotifications(ctx context.Context, types []gtsmodel.NotificationType, targetAccountID string, originAccountID string) error {
if targetAccountID == "" && originAccountID == "" {
return gtserror.New("one of targetAccountID or originAccountID must be set")
}