Refactor settings handling to support context-based reloading and add utility functions for context management
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-02-19 11:06:05 +11:00
parent f2d6b3158b
commit 504621f80d
5 changed files with 50 additions and 4 deletions

View File

@@ -554,7 +554,7 @@ func CreateTableReport(logger *slog.Logger, Database db.Database, ctx context.Co
if err := db.ValidateTableName(tableName); err != nil {
return nil, err
}
reportCfg := reloadReportSettingsForReport(logger, cfg)
reportCfg := reloadReportSettingsForReport(ctx, logger, cfg)
start := time.Now()
logger.Debug("Create table report start", "table", tableName)
@@ -792,13 +792,17 @@ func CreateTableReport(logger *slog.Logger, Database db.Database, ctx context.Co
return buffer.Bytes(), nil
}
func reloadReportSettingsForReport(logger *slog.Logger, cfg *settings.Settings) *settings.Settings {
func reloadReportSettingsForReport(ctx context.Context, logger *slog.Logger, cfg *settings.Settings) *settings.Settings {
if cfg == nil {
return nil
}
if strings.TrimSpace(cfg.SettingsPath) == "" {
return cfg
}
if settings.IsReloadedInContext(ctx, cfg) {
logger.Debug("settings already reloaded for current run; using in-memory settings", "settings_file", cfg.SettingsPath)
return cfg
}
reloaded := settings.New(logger, cfg.SettingsPath)
if err := reloaded.ReadYMLSettings(); err != nil {