From cac9d65029e972af9440ff79a2617d5c524a9d64 Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:48:59 +0000 Subject: [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 --- internal/processing/preferences.go | 2 +- internal/processing/status/create.go | 2 +- internal/processing/timeline/notification.go | 4 ++-- internal/processing/workers/surfacenotify.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) (limited to 'internal/processing') diff --git a/internal/processing/preferences.go b/internal/processing/preferences.go index 0a5f566ae..fb445ec5b 100644 --- a/internal/processing/preferences.go +++ b/internal/processing/preferences.go @@ -46,7 +46,7 @@ func (p *Processor) PreferencesGet(ctx context.Context, accountID string) (*apim func mastoPrefVisibility(vis gtsmodel.Visibility) string { switch vis { case gtsmodel.VisibilityPublic, gtsmodel.VisibilityDirect: - return string(vis) + return vis.String() case gtsmodel.VisibilityUnlocked: return "unlisted" default: diff --git a/internal/processing/status/create.go b/internal/processing/status/create.go index fbc2dadf7..ef8f8aa56 100644 --- a/internal/processing/status/create.go +++ b/internal/processing/status/create.go @@ -372,7 +372,7 @@ func (p *Processor) processVisibility( // Fall back to account default, set // this back on the form for later use. - case accountDefaultVis != "": + case accountDefaultVis != 0: status.Visibility = accountDefaultVis form.Visibility = p.converter.VisToAPIVis(ctx, accountDefaultVis) diff --git a/internal/processing/timeline/notification.go b/internal/processing/timeline/notification.go index 34e6d865d..92dbf851f 100644 --- a/internal/processing/timeline/notification.go +++ b/internal/processing/timeline/notification.go @@ -41,8 +41,8 @@ func (p *Processor) NotificationsGet( sinceID string, minID string, limit int, - types []string, - excludeTypes []string, + types []gtsmodel.NotificationType, + excludeTypes []gtsmodel.NotificationType, ) (*apimodel.PageableResponse, gtserror.WithCode) { notifs, err := p.state.DB.GetAccountNotifications( ctx, diff --git a/internal/processing/workers/surfacenotify.go b/internal/processing/workers/surfacenotify.go index 872ccca65..1520d2ec0 100644 --- a/internal/processing/workers/surfacenotify.go +++ b/internal/processing/workers/surfacenotify.go @@ -542,7 +542,7 @@ func getNotifyLockURI( ) string { builder := strings.Builder{} builder.WriteString("notification:?") - builder.WriteString("type=" + string(notificationType)) + builder.WriteString("type=" + notificationType.String()) builder.WriteString("&target=" + targetAccount.URI) builder.WriteString("&origin=" + originAccount.URI) if statusID != "" { -- cgit v1.2.3