add router switch and pgx changes

This commit is contained in:
2025-05-29 13:06:48 +02:00
parent 48fe13eecc
commit 941deaf9df
2 changed files with 46 additions and 23 deletions
+27 -14
View File
@@ -64,6 +64,9 @@ type Config struct {
// default map[string]DatabaseConfig{}
Databases map[string]DatabaseConfig
// default false
CreateRouter bool
// default false
CreateSSEBroker bool
@@ -87,9 +90,9 @@ type App struct {
}
type Paseto struct {
AsymmetricKey paseto.V4AsymmetricSecretKey
PublicKey paseto.V4AsymmetricPublicKey
Duration time.Duration
SecretKey paseto.V4AsymmetricSecretKey
PublicKey paseto.V4AsymmetricPublicKey
Duration time.Duration
}
func NewApp(config ...Config) *App {
@@ -101,6 +104,7 @@ func NewApp(config ...Config) *App {
Timezone: "UTC",
Paseto: nil,
Databases: make(map[string]DatabaseConfig),
CreateRouter: false,
CreateSSEBroker: false,
CreateSession: false,
CreateMailer: false,
@@ -162,11 +166,11 @@ func NewApp(config ...Config) *App {
var ak paseto.V4AsymmetricSecretKey
var err error
if os.Getenv("PASETO_ASYMMETRIC_KEY") != "" {
slog.Debug("using paseto asymmetric key from env")
ak, err = paseto.NewV4AsymmetricSecretKeyFromHex(os.Getenv("PASETO_ASYMMETRIC_KEY"))
if os.Getenv("PASETO_SECRET_KEY") != "" {
slog.Debug("using paseto secret key from env")
ak, err = paseto.NewV4AsymmetricSecretKeyFromHex(os.Getenv("PASETO_SECRET_KEY"))
if err != nil {
slog.Error("error creating asymmetric key", "error", err)
slog.Error("error creating secret key", "error", err)
ak = paseto.NewV4AsymmetricSecretKey()
}
} else {
@@ -187,15 +191,24 @@ func NewApp(config ...Config) *App {
}
cfg.Paseto = &Paseto{
AsymmetricKey: ak,
PublicKey: pk,
Duration: duration,
SecretKey: ak,
PublicKey: pk,
Duration: duration,
}
}
app := &App{
config: cfg,
Router: newRouter(),
app := &App{config: cfg}
if cfg.CreateRouter {
app.Router = newRouter()
}
// Create PGX pools automatically if there are entries in Databases with driver 'pgx'
for dbName, dbConfig := range cfg.Databases {
if dbConfig.DriverName == "pgx" {
slog.Debug("creating pgx pool", "database", dbName)
app.newPGXPool(dbName)
}
}
slog.Info(
@@ -215,7 +228,7 @@ func NewApp(config ...Config) *App {
)
if cfg.EnvMode != EnvironmentProduction {
slog.Debug("paseto_assymetric_key", "key", cfg.Paseto.AsymmetricKey.ExportHex())
slog.Debug("paseto_secret_key", "key", cfg.Paseto.SecretKey.ExportHex())
}
if cfg.CreateSSEBroker {