1
0
mirror of https://github.com/pocket-id/pocket-id.git synced 2026-02-04 11:36:46 +00:00

fix: allow version downgrade database is dirty

This commit is contained in:
Elias Schneider
2026-01-03 15:06:39 +01:00
parent 2f651adf3b
commit ba00f40bd4

View File

@@ -38,7 +38,14 @@ func MigrateDatabase(sqlDb *sql.DB) error {
return migrateDatabaseFromGitHub(sqlDb, requiredVersion) return migrateDatabaseFromGitHub(sqlDb, requiredVersion)
} }
if err := m.Migrate(requiredVersion); err != nil && !errors.Is(err, migrate.ErrNoChange) { err = m.Migrate(requiredVersion)
if err != nil {
if errors.Is(err, migrate.ErrNoChange) {
return nil
}
if errors.As(err, &migrate.ErrDirty{}) {
return fmt.Errorf("database migration failed. Please create an issue on GitHub and temporarely downgrade to the previous version: %w", err)
}
return fmt.Errorf("failed to apply embedded migrations: %w", err) return fmt.Errorf("failed to apply embedded migrations: %w", err)
} }
return nil return nil
@@ -98,7 +105,7 @@ func migrateDatabaseFromGitHub(sqlDb *sql.DB, version uint) error {
return fmt.Errorf("failed to create GitHub migration instance: %w", err) return fmt.Errorf("failed to create GitHub migration instance: %w", err)
} }
if err := m.Migrate(version); err != nil && !errors.Is(err, migrate.ErrNoChange) { if err := m.Force(int(version)); err != nil && !errors.Is(err, migrate.ErrNoChange) { //nolint:gosec
return fmt.Errorf("failed to apply GitHub migrations: %w", err) return fmt.Errorf("failed to apply GitHub migrations: %w", err)
} }
return nil return nil