diff --git a/riverdriver/river_driver_interface.go b/riverdriver/river_driver_interface.go index aed92b7e..43eacb26 100644 --- a/riverdriver/river_driver_interface.go +++ b/riverdriver/river_driver_interface.go @@ -15,6 +15,7 @@ package riverdriver import ( "context" "errors" + "fmt" "io/fs" "time" @@ -865,6 +866,7 @@ type TableTruncateParams struct { // // API is not stable. DO NOT USE. func MigrationLineMainTruncateTables(version int) []string { + // 0 value must be handled and should always point to latest migration version switch version { case 1: return nil // don't truncate `river_migrate` @@ -872,8 +874,9 @@ func MigrationLineMainTruncateTables(version int) []string { return []string{"river_job", "river_leader"} case 4: return []string{"river_job", "river_leader", "river_queue"} + case 0, 5, 6: + return []string{"river_job", "river_leader", "river_queue", "river_client", "river_client_queue"} } - // 0 (zero value), 5, 6 - return []string{"river_job", "river_leader", "river_queue", "river_client", "river_client_queue"} + panic(fmt.Sprintf("unrecognized migration version: %d", version)) } diff --git a/riverdriver/river_driver_interface_test.go b/riverdriver/river_driver_interface_test.go index 866d122b..978e299c 100644 --- a/riverdriver/river_driver_interface_test.go +++ b/riverdriver/river_driver_interface_test.go @@ -250,6 +250,19 @@ func TestJobSetStateSnoozed(t *testing.T) { //nolint:dupl }) } +func TestMigrationLineMainTruncateTables(t *testing.T) { + t.Parallel() + + t.Run("ZeroValueDoesNotPanic", func(t *testing.T) { + t.Parallel() + + require.NotPanics(t, func() { + tables := MigrationLineMainTruncateTables(0) + require.NotEmpty(t, tables) + }) + }) +} + func TestJobSetStateSnoozedAvailable(t *testing.T) { //nolint:dupl t.Parallel()