diff --git a/internal/database/database.go b/internal/database/database.go index 8760c8d..4b95a05 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -60,7 +60,10 @@ func RunMigrations(sqlDB *sql.DB) error { } func RunMigrationsAndFixes(sqlDB *sql.DB) error { if err := RunMigrations(sqlDB); err != nil { - return err + return fmt.Errorf("run migrations: %w", err) } - return RunDataFixes(sqlDB) + if err := RunDataFixes(sqlDB); err != nil { + return fmt.Errorf("run data fixes: %w", err) + } + return nil } diff --git a/internal/database/fixes.go b/internal/database/fixes.go index dd0a959..5fc6fe7 100644 --- a/internal/database/fixes.go +++ b/internal/database/fixes.go @@ -21,12 +21,12 @@ func RunDataFixes(sqlDB *sql.DB) error { } if err := ensureDataFixTable(ctx, sqlDB); err != nil { - return err + return fmt.Errorf("ensure data fix table: %w", err) } applied, err := loadAppliedFixes(ctx, sqlDB) if err != nil { - return err + return fmt.Errorf("load applied data fixes: %w", err) } for _, fix := range fixes { @@ -46,7 +46,7 @@ func RunDataFixes(sqlDB *sql.DB) error { return fmt.Errorf("data fix %s failed: %w", fix.ID, err) } if err := markFixApplied(ctx, sqlDB, fix.ID); err != nil { - return err + return fmt.Errorf("mark data fix %s applied: %w", fix.ID, err) } } diff --git a/internal/database/fixes/20260528_backfill_avatar_url.go b/internal/database/fixes/20260528_backfill_avatar_url.go index 2348027..7088a14 100644 --- a/internal/database/fixes/20260528_backfill_avatar_url.go +++ b/internal/database/fixes/20260528_backfill_avatar_url.go @@ -13,7 +13,7 @@ func init() { Apply: func(ctx context.Context, sqlDB *sql.DB) error { rows, err := sqlDB.QueryContext(ctx, `SELECT id, username FROM user WHERE avatar_url = ''`) if err != nil { - return err + return fmt.Errorf("query users missing avatar_url: %w", err) } defer func() { _ = rows.Close() }() @@ -25,12 +25,12 @@ func init() { for rows.Next() { var r userRow if err := rows.Scan(&r.id, &r.username); err != nil { - return err + return fmt.Errorf("scan user missing avatar_url: %w", err) } toUpdate = append(toUpdate, r) } if err := rows.Err(); err != nil { - return err + return fmt.Errorf("iterate users missing avatar_url: %w", err) } for _, u := range toUpdate { diff --git a/internal/database/fixes/20260608_backfill_anime_duration_seconds.go b/internal/database/fixes/20260608_backfill_anime_duration_seconds.go index 7c3cd14..85e8858 100644 --- a/internal/database/fixes/20260608_backfill_anime_duration_seconds.go +++ b/internal/database/fixes/20260608_backfill_anime_duration_seconds.go @@ -25,7 +25,7 @@ func init() { func applyAnimeDurationSecondsBackfill(ctx context.Context, sqlDB *sql.DB) error { toUpdate, err := listAnimeMissingDurationSeconds(ctx, sqlDB) if err != nil { - return err + return fmt.Errorf("list anime missing duration_seconds: %w", err) } client := jikan.NewClient(config.Config{}, db.New(sqlDB), observability.NewMetrics())