use int16 for enum types

This commit is contained in:
kim 2024-11-25 11:13:03 +00:00
commit 336db3d6ca
4 changed files with 28 additions and 4 deletions

View file

@ -130,7 +130,7 @@ func init() {
// convertEnums performs a transaction that converts
// a table's column of our old-style enums (strings) to
// more performant and space-saving integer types.
func convertEnums[OldType ~string, NewType ~int](
func convertEnums[OldType ~string, NewType ~int16](
ctx context.Context,
tx bun.Tx,
table string,
@ -159,7 +159,7 @@ func convertEnums[OldType ~string, NewType ~int](
// Add new column to database.
if _, err := tx.NewAddColumn().
Table(table).
ColumnExpr("? INTEGER NOT NULL DEFAULT ?",
ColumnExpr("? SMALLINT NOT NULL DEFAULT ?",
bun.Ident(newColumn),
*defaultValue).
Exec(ctx); err != nil {

View file

@ -0,0 +1,24 @@
// GoToSocial
// Copyright (C) GoToSocial Authors admin@gotosocial.org
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package gtsmodel
// enumType is the type we (at least, should) use
// for database enum types. it is the largest size
// supported by a PostgreSQL SMALLINT, since an
// SQLite SMALLINT is actually variable in size.
type enumType int16

View file

@ -36,7 +36,7 @@ type Notification struct {
// NotificationType describes the
// reason/type of this notification.
type NotificationType int
type NotificationType enumType
const (
// Notification Types

View file

@ -265,7 +265,7 @@ type StatusToEmoji struct {
// Visibility represents the
// visibility granularity of a status.
type Visibility int
type Visibility enumType
const (
// VisibilityNone means nobody can see this.