fix: wrap episodes season index migration block

This commit is contained in:
rxwatcher
2026-06-19 06:13:26 +02:00
parent de931f784a
commit 729468be30
2 changed files with 28 additions and 2 deletions
@@ -0,0 +1,24 @@
package migrations
import (
"strings"
"testing"
)
func TestEpisodesSeasonIDIndexMigrationWrapsDollarQuotedBlock(t *testing.T) {
migrationBytes, err := FS.ReadFile("sql/20260618164519_add_episodes_season_id_index.sql")
if err != nil {
t.Fatalf("read migration: %v", err)
}
migration := string(migrationBytes)
for _, want := range []string{
"-- +goose StatementBegin\nDO $$",
"END;\n$$;\n-- +goose StatementEnd",
"CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_episodes_season_id_episode_number",
} {
if !strings.Contains(migration, want) {
t.Fatalf("migration missing %q", want)
}
}
}
@@ -5,6 +5,7 @@
-- episodes.season_id, while the existing episode index is keyed by
-- (series_id, season_number, episode_number). On large catalogs this forced a
-- parallel scan of the full episodes table for each season page load.
-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -18,10 +19,11 @@ BEGIN
) THEN
DROP INDEX public.idx_episodes_season_id_episode_number;
END IF;
END
END;
$$;
-- +goose StatementEnd
CREATE INDEX CONCURRENTLY idx_episodes_season_id_episode_number
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_episodes_season_id_episode_number
ON public.episodes USING btree (season_id, episode_number);
-- +goose Down