package migrate_validation import ( "errors" "fmt" "github.com/golang-migrate/migrate/v4" "github.com/golang-migrate/migrate/v4/database" "github.com/golang-migrate/migrate/v4/source" ) func CompareVersion(src source.Driver, dst database.Driver) error { // Determine database migration version dstVersion, dstDirty, dstErr := dst.Version() if dstDirty || (dstErr != nil && !errors.Is(dstErr, migrate.ErrNilVersion)) { return dstErr } // Determine source migration version srcVersion, srcErr := src.Next(uint(dstVersion)) if srcErr != nil { return srcErr } if srcVersion != uint(dstVersion) { return fmt.Errorf("version mismatch: src=%d dst=%d", srcVersion, dstVersion) } return nil }