Add cmd for generating code from the new models
Some checks are pending
/ test (push) Waiting to run

This commit is contained in:
Melody Becker 2025-03-27 13:35:24 +01:00
parent 67b507f4bd
commit bf5180559f
Signed by: mstar
SSH key fingerprint: SHA256:9VAo09aaVNTWKzPW7Hq2LW+ox9OdwmTSHRoD4mlz1yI
9 changed files with 401 additions and 132 deletions

View file

@ -1,64 +0,0 @@
package storage
import (
"context"
"time"
"github.com/rs/zerolog"
"gorm.io/gorm/logger"
)
type gormLogger struct {
logger zerolog.Logger
}
func newGormLogger(zerologger zerolog.Logger) *gormLogger {
return &gormLogger{zerologger}
}
func (g *gormLogger) LogMode(newLevel logger.LogLevel) logger.Interface {
switch newLevel {
case logger.Error:
g.logger = g.logger.Level(zerolog.ErrorLevel)
case logger.Warn:
g.logger = g.logger.Level(zerolog.WarnLevel)
case logger.Info:
g.logger = g.logger.Level(zerolog.InfoLevel)
case logger.Silent:
g.logger = g.logger.Level(zerolog.Disabled)
}
return g
}
func (g *gormLogger) Info(ctx context.Context, format string, args ...interface{}) {
g.logger.Info().Ctx(ctx).Msgf(format, args...)
}
func (g *gormLogger) Warn(ctx context.Context, format string, args ...interface{}) {
g.logger.Warn().Ctx(ctx).Msgf(format, args...)
}
func (g *gormLogger) Error(ctx context.Context, format string, args ...interface{}) {
g.logger.Error().Ctx(ctx).Msgf(format, args...)
}
func (g *gormLogger) Trace(
ctx context.Context,
begin time.Time,
fc func() (sql string, rowsAffected int64),
err error,
) {
sql, rowsAffected := fc()
g.logger.Trace().
Ctx(ctx).
Time("gorm-begin", begin).
Err(err).
Str("gorm-query", sql).
Int64("gorm-rows-affected", rowsAffected).
Send()
}
func (g *gormLogger) OverwriteLoggingLevel(new zerolog.Level) {
g.logger = g.logger.Level(new)
}
func (g *gormLogger) OverwriteLogger(new zerolog.Logger) {
g.logger = new
}

View file

@ -32,26 +32,7 @@ func Migrate(db *gorm.DB) error {
// Returns the raw error created by gorm, with no wrapping
func migrateTypes(db *gorm.DB) error {
if err := db.AutoMigrate(
&models.Emote{},
&models.MediaMetadata{},
&models.Note{},
&models.NoteToAttachment{},
&models.NoteToEmote{},
&models.NoteToPing{},
&models.NoteTag{},
&models.Reaction{},
&models.RemoteServer{},
&models.Role{},
&models.User{},
&models.UserAuthMethod{},
&models.UserToBeing{},
&models.UserInfoField{},
&models.UserToUserRelation{},
&models.UserRemoteLinks{},
&models.UserToRole{},
&models.UserToTag{},
); err != nil {
if err := db.AutoMigrate(models.AllTypes...); err != nil {
return err
}
return nil

View file

@ -0,0 +1,22 @@
package models
var AllTypes = []any{
&Emote{},
&MediaMetadata{},
&Note{},
&NoteToAttachment{},
&NoteToEmote{},
&NoteToPing{},
&NoteTag{},
&Reaction{},
&RemoteServer{},
&Role{},
&User{},
&UserAuthMethod{},
&UserToBeing{},
&UserInfoField{},
&UserToUserRelation{},
&UserRemoteLinks{},
&UserToTag{},
&UserToRole{},
}

View file

@ -41,7 +41,7 @@ type Role struct {
gorm.Model
// Name of the role
Name string `gorm:"primaryKey;unique"`
Name string `gorm:"unique"`
// Priority of the role
// Lower priority gets applied first and thus overwritten by higher priority ones