[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
parent 934e895ec0
commit cac9d65029
32 changed files with 940 additions and 91 deletions

View File

@@ -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:

View File

@@ -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)

View File

@@ -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,

View File

@@ -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 != "" {