From 4af68021f6a3987e939373f8351e0ab4444ad8ca Mon Sep 17 00:00:00 2001 From: mkelvers Date: Tue, 26 May 2026 13:48:33 +0200 Subject: [PATCH] feat: backfill null next_refresh_at in episode cache --- ...e_availability_backfill_next_refresh_at.go | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 internal/database/fix_20260526_episode_availability_backfill_next_refresh_at.go diff --git a/internal/database/fix_20260526_episode_availability_backfill_next_refresh_at.go b/internal/database/fix_20260526_episode_availability_backfill_next_refresh_at.go new file mode 100644 index 0000000..39185bf --- /dev/null +++ b/internal/database/fix_20260526_episode_availability_backfill_next_refresh_at.go @@ -0,0 +1,28 @@ +package database + +import ( + "context" + "database/sql" + "fmt" +) + +func init() { + registerDataFix(dataFix{ + id: "20260526_episode_availability_backfill_next_refresh_at", + apply: func(ctx context.Context, sqlDB *sql.DB) error { + // Old caches could have next_refresh_at NULL (especially for airing shows with missing broadcast metadata), + // which can result in "never refresh again" behavior on the server. + _, err := sqlDB.ExecContext(ctx, ` +UPDATE episode_availability_cache +SET next_refresh_at = datetime(CURRENT_TIMESTAMP, '+6 hours'), + updated_at = CURRENT_TIMESTAMP +WHERE next_refresh_at IS NULL; +`) + if err != nil { + return fmt.Errorf("backfill episode_availability_cache.next_refresh_at: %w", err) + } + return nil + }, + }) +} +