tweaks
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"git.haelnorr.com/h/oslstats/internal/config"
|
||||
"git.haelnorr.com/h/oslstats/internal/db"
|
||||
@@ -17,10 +18,15 @@ func setupBun(ctx context.Context, cfg *config.Config) (conn *bun.DB, close func
|
||||
dsn := fmt.Sprintf("postgres://%s:%s@%s:%v/%s?sslmode=%s",
|
||||
cfg.DB.User, cfg.DB.Password, cfg.DB.Host, cfg.DB.Port, cfg.DB.DB, cfg.DB.SSL)
|
||||
sqldb := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(dsn)))
|
||||
|
||||
sqldb.SetMaxOpenConns(25)
|
||||
sqldb.SetMaxIdleConns(10)
|
||||
sqldb.SetConnMaxLifetime(5 * time.Minute)
|
||||
sqldb.SetConnMaxIdleTime(5 * time.Minute)
|
||||
|
||||
conn = bun.NewDB(sqldb, pgdialect.New())
|
||||
close = sqldb.Close
|
||||
|
||||
// Simple table creation for backward compatibility
|
||||
err = loadModels(ctx, conn)
|
||||
if err != nil {
|
||||
return nil, nil, errors.Wrap(err, "loadModels")
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"git.haelnorr.com/h/golib/hlog"
|
||||
"git.haelnorr.com/h/oslstats/internal/config"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
@@ -23,6 +24,12 @@ func main() {
|
||||
fmt.Fprintf(os.Stderr, "%s\n", errors.Wrap(err, "Failed to load config"))
|
||||
os.Exit(1)
|
||||
}
|
||||
// Setup the logger
|
||||
logger, err := hlog.NewLogger(cfg.HLOG, os.Stdout)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%s\n", errors.Wrap(err, "Failed to init logger"))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Handle utility flags
|
||||
if flags.EnvDoc || flags.ShowEnv {
|
||||
@@ -38,8 +45,7 @@ func main() {
|
||||
// Handle migration file creation (doesn't need DB connection)
|
||||
if flags.MigrateCreate != "" {
|
||||
if err := createMigration(flags.MigrateCreate); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error creating migration: %v\n", err)
|
||||
os.Exit(1)
|
||||
logger.Fatal().Err(err).Str("stacktrace", fmt.Sprintf("%+v", errors.Wrap(err, "createMigration"))).Msg("Error creating migration")
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -52,8 +58,7 @@ func main() {
|
||||
// Setup database connection
|
||||
conn, close, err := setupBun(ctx, cfg)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error setting up database: %v\n", err)
|
||||
os.Exit(1)
|
||||
logger.Fatal().Err(err).Str("stacktrace", fmt.Sprintf("%+v", errors.Wrap(err, "setupBun"))).Msg("Error setting up database")
|
||||
}
|
||||
defer close()
|
||||
|
||||
@@ -71,15 +76,13 @@ func main() {
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
|
||||
os.Exit(1)
|
||||
logger.Fatal().Err(err).Str("stacktrace", fmt.Sprintf("%+v", errors.Wrap(err, "dbFlags"))).Msg("Error migrating database")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Normal server startup
|
||||
if err := run(ctx, os.Stdout, cfg); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%s\n", err)
|
||||
os.Exit(1)
|
||||
if err := run(ctx, logger, cfg); err != nil {
|
||||
logger.Fatal().Err(err).Str("stacktrace", fmt.Sprintf("%+v", errors.Wrap(err, "run"))).Msg("Error starting server")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,8 +38,8 @@ func addRoutes(
|
||||
},
|
||||
{
|
||||
Path: "/login",
|
||||
Method: hws.MethodGET,
|
||||
Handler: auth.LogoutReq(handlers.Login(s, cfg, store, discordAPI)),
|
||||
Methods: []hws.Method{hws.MethodGET, hws.MethodPOST},
|
||||
Handler: auth.LogoutReq(handlers.Login(s, conn, cfg, store, discordAPI)),
|
||||
},
|
||||
{
|
||||
Path: "/auth/callback",
|
||||
|
||||
@@ -2,7 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"sync"
|
||||
@@ -18,16 +18,10 @@ import (
|
||||
)
|
||||
|
||||
// Initializes and runs the server
|
||||
func run(ctx context.Context, w io.Writer, cfg *config.Config) error {
|
||||
func run(ctx context.Context, logger *hlog.Logger, cfg *config.Config) error {
|
||||
ctx, cancel := signal.NotifyContext(ctx, os.Interrupt)
|
||||
defer cancel()
|
||||
|
||||
// Setup the logger
|
||||
logger, err := hlog.NewLogger(cfg.HLOG, w)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "hlog.NewLogger")
|
||||
}
|
||||
|
||||
// Setup the database connection
|
||||
logger.Debug().Msg("Config loaded and logger started")
|
||||
logger.Debug().Msg("Connecting to database")
|
||||
@@ -78,7 +72,7 @@ func run(ctx context.Context, w io.Writer, cfg *config.Config) error {
|
||||
logger.Info().Msg("Shut down requested, waiting 60 seconds...")
|
||||
err := httpServer.Shutdown(shutdownCtx)
|
||||
if err != nil {
|
||||
logger.Error().Err(err).Msg("Graceful shutdown failed")
|
||||
logger.Error().Err(err).Str("stacktrace", fmt.Sprintf("%+v", errors.Wrap(err, "httpServer.Shutdown"))).Msg("Graceful shutdown failed")
|
||||
}
|
||||
})
|
||||
wg.Wait()
|
||||
|
||||
Reference in New Issue
Block a user