mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2026-01-06 03:23:16 -06:00
use int16 for enum types
This commit is contained in:
parent
79c0c3a4a9
commit
336db3d6ca
4 changed files with 28 additions and 4 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
24
internal/gtsmodel/common.go
Normal file
24
internal/gtsmodel/common.go
Normal 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
|
||||
|
|
@ -36,7 +36,7 @@ type Notification struct {
|
|||
|
||||
// NotificationType describes the
|
||||
// reason/type of this notification.
|
||||
type NotificationType int
|
||||
type NotificationType enumType
|
||||
|
||||
const (
|
||||
// Notification Types
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue