/
githubmirror
/
goose
Обзор
Документация
Войти
/
githubmirror
/
goose
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
fix.go
54 строки
1 KB
Michael Fridman
fix: collect go migrations (#588)
27 авг 2023, 18:31
Не верифицирован
27 авг 2023, 18:31
7011525
Код
Авторство
О чём код?
package goose import ( "fmt" "os" "path/filepath" "strings" ) const seqVersionTemplate = "%05v" func Fix(dir string) error { // always use osFS here because it's modifying operation migrations, err := collectMigrationsFS(osFS{}, dir, minVersion, maxVersion, registeredGoMigrations) if err != nil { return err } // split into timestamped and versioned migrations tsMigrations, err := migrations.timestamped() if err != nil { return err } vMigrations, err := migrations.versioned() if err != nil { return err } // Initial version. version := int64(1) if last, err := vMigrations.Last(); err == nil { version = last.Version + 1 } // fix filenames by replacing timestamps with sequential versions for _, tsm := range tsMigrations { oldPath := tsm.Source newPath := strings.Replace( oldPath, fmt.Sprintf("%d", tsm.Version), fmt.Sprintf(seqVersionTemplate, version), 1, ) if err := os.Rename(oldPath, newPath); err != nil { return err } log.Printf("RENAMED %s => %s", filepath.Base(oldPath), filepath.Base(newPath)) version++ } return nil }