Enhance table report creation by reloading settings and ensuring logger initialization
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-02-18 12:14:20 +11:00
parent dcebd3cf60
commit 6517a30fa2

View File

@@ -547,9 +547,13 @@ func FormatSnapshotLabel(snapshotType string, snapshotTime time.Time, tableName
}
func CreateTableReport(logger *slog.Logger, Database db.Database, ctx context.Context, tableName string, cfg *settings.Settings) ([]byte, error) {
if logger == nil {
logger = slog.Default()
}
if err := db.ValidateTableName(tableName); err != nil {
return nil, err
}
reportCfg := reloadReportSettingsForReport(logger, cfg)
start := time.Now()
logger.Debug("Create table report start", "table", tableName)
@@ -754,7 +758,7 @@ func CreateTableReport(logger *slog.Logger, Database db.Database, ctx context.Co
for _, spec := range specs {
reportHeaders = append(reportHeaders, spec.Name)
}
addSummaryPivotSheet(logger, xlsx, sheetName, reportHeaders, rowCount, tableName, cfg)
addSummaryPivotSheet(logger, xlsx, sheetName, reportHeaders, rowCount, tableName, reportCfg)
meta := reportMetadata{
TableName: tableName,
@@ -787,6 +791,24 @@ 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 {
if cfg == nil {
return nil
}
if strings.TrimSpace(cfg.SettingsPath) == "" {
return cfg
}
reloaded := settings.New(logger, cfg.SettingsPath)
if err := reloaded.ReadYMLSettings(); err != nil {
logger.Warn("failed to reload settings from disk before report creation; using in-memory settings", "settings_file", cfg.SettingsPath, "error", err)
return cfg
}
logger.Debug("reloaded settings from disk before report creation", "settings_file", cfg.SettingsPath)
return reloaded
}
// SaveTableReport renders a table report and writes it to the destination directory with a .xlsx extension.
func SaveTableReport(logger *slog.Logger, Database db.Database, ctx context.Context, tableName, destDir string, cfg *settings.Settings) (string, error) {
if err := db.ValidateTableName(tableName); err != nil {