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

48
shared/flags.go Normal file
View file

@ -0,0 +1,48 @@
package shared
import (
"flag"
"fmt"
"os"
"github.com/rs/zerolog/log"
)
var (
FlagConfigFile *string = flag.String(
"config",
"config.toml",
"Location of the config file",
)
FlagConfigOnly *bool = flag.Bool(
"validate-config",
false,
"If set, the server will only validate the config (or write the default one) and then quit",
)
)
func flagUsage() {
executable, err := os.Executable()
if err != nil {
log.Fatal().Err(err).Msg("Failed to get own path")
}
fmt.Fprintf(os.Stderr, "Usage of %s:\n", executable)
fmt.Fprintln(os.Stderr, "\t-config string")
fmt.Fprintln(os.Stderr, "\t\tLocation of the config file (default: \"config.toml\")")
fmt.Fprintln(os.Stderr, "\t-loglevel string")
fmt.Fprintln(
os.Stderr,
"\t\tSet the logging level. Options are: Trace, Debug, Info, Warning, Error and Fatal. Case insensitive (default: \"Info\")",
)
fmt.Fprintln(os.Stderr, "\t-validate-config")
fmt.Fprintln(
os.Stderr,
"\t\tIf set, the server will only validate the config (or write the default one) and then quit",
)
fmt.Fprintln(os.Stderr, "\t-jsonlogs")
fmt.Fprintln(os.Stderr, "\t\tIf set, writes logging messages as json objects instead")
}
func init() {
flag.Usage = flagUsage
}

View file

@ -0,0 +1,64 @@
package shared
import (
"context"
"time"
"github.com/rs/zerolog"
"gorm.io/gorm/logger"
)
type ZerologGormAdapter struct {
logger zerolog.Logger
}
func NewGormLogger(zerologger zerolog.Logger) *ZerologGormAdapter {
return &ZerologGormAdapter{zerologger}
}
func (g *ZerologGormAdapter) 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 *ZerologGormAdapter) Info(ctx context.Context, format string, args ...any) {
g.logger.Info().Ctx(ctx).Msgf(format, args...)
}
func (g *ZerologGormAdapter) Warn(ctx context.Context, format string, args ...any) {
g.logger.Warn().Ctx(ctx).Msgf(format, args...)
}
func (g *ZerologGormAdapter) Error(ctx context.Context, format string, args ...any) {
g.logger.Error().Ctx(ctx).Msgf(format, args...)
}
func (g *ZerologGormAdapter) 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 *ZerologGormAdapter) OverwriteLoggingLevel(new zerolog.Level) {
g.logger = g.logger.Level(new)
}
func (g *ZerologGormAdapter) OverwriteLogger(new zerolog.Logger) {
g.logger = new
}