mirror of https://github.com/status-im/migrate.git
explain dirty version error
This commit is contained in:
parent
4bb46a98c6
commit
e64b7cc233
21
migrate.go
21
migrate.go
|
@ -29,7 +29,6 @@ var (
|
|||
ErrNilVersion = fmt.Errorf("no migration")
|
||||
ErrLocked = fmt.Errorf("database locked")
|
||||
ErrLockTimeout = fmt.Errorf("timeout: can't acquire database lock")
|
||||
ErrDirty = fmt.Errorf("dirty database")
|
||||
)
|
||||
|
||||
// ErrShortLimit is an error returned when not enough migrations
|
||||
|
@ -43,6 +42,14 @@ func (e ErrShortLimit) Error() string {
|
|||
return fmt.Sprintf("limit %v short", e.Short)
|
||||
}
|
||||
|
||||
type ErrDirty struct {
|
||||
Version int
|
||||
}
|
||||
|
||||
func (e ErrDirty) Error() string {
|
||||
return fmt.Sprintf("Dirty database version %v. Fix and force version.", e.Version)
|
||||
}
|
||||
|
||||
type Migrate struct {
|
||||
sourceName string
|
||||
sourceDrv source.Driver
|
||||
|
@ -210,7 +217,7 @@ func (m *Migrate) Migrate(version uint) error {
|
|||
}
|
||||
|
||||
if dirty {
|
||||
return m.unlockErr(ErrDirty)
|
||||
return m.unlockErr(ErrDirty{curVersion})
|
||||
}
|
||||
|
||||
ret := make(chan interface{}, m.PrefetchMigrations)
|
||||
|
@ -236,7 +243,7 @@ func (m *Migrate) Steps(n int) error {
|
|||
}
|
||||
|
||||
if dirty {
|
||||
return m.unlockErr(ErrDirty)
|
||||
return m.unlockErr(ErrDirty{curVersion})
|
||||
}
|
||||
|
||||
ret := make(chan interface{}, m.PrefetchMigrations)
|
||||
|
@ -263,7 +270,7 @@ func (m *Migrate) Up() error {
|
|||
}
|
||||
|
||||
if dirty {
|
||||
return m.unlockErr(ErrDirty)
|
||||
return m.unlockErr(ErrDirty{curVersion})
|
||||
}
|
||||
|
||||
ret := make(chan interface{}, m.PrefetchMigrations)
|
||||
|
@ -285,7 +292,7 @@ func (m *Migrate) Down() error {
|
|||
}
|
||||
|
||||
if dirty {
|
||||
return m.unlockErr(ErrDirty)
|
||||
return m.unlockErr(ErrDirty{curVersion})
|
||||
}
|
||||
|
||||
ret := make(chan interface{}, m.PrefetchMigrations)
|
||||
|
@ -317,13 +324,13 @@ func (m *Migrate) Run(migration ...*Migration) error {
|
|||
return err
|
||||
}
|
||||
|
||||
_, dirty, err := m.databaseDrv.Version()
|
||||
curVersion, dirty, err := m.databaseDrv.Version()
|
||||
if err != nil {
|
||||
return m.unlockErr(err)
|
||||
}
|
||||
|
||||
if dirty {
|
||||
return m.unlockErr(ErrDirty)
|
||||
return m.unlockErr(ErrDirty{curVersion})
|
||||
}
|
||||
|
||||
ret := make(chan interface{}, m.PrefetchMigrations)
|
||||
|
|
|
@ -289,7 +289,7 @@ func TestMigrateDirty(t *testing.T) {
|
|||
}
|
||||
|
||||
err := m.Migrate(1)
|
||||
if err != ErrDirty {
|
||||
if _, ok := err.(ErrDirty); !ok {
|
||||
t.Fatalf("expected ErrDirty, got %v", err)
|
||||
}
|
||||
}
|
||||
|
@ -370,7 +370,7 @@ func TestStepsDirty(t *testing.T) {
|
|||
}
|
||||
|
||||
err := m.Steps(1)
|
||||
if err != ErrDirty {
|
||||
if _, ok := err.(ErrDirty); !ok {
|
||||
t.Fatalf("expected ErrDirty, got %v", err)
|
||||
}
|
||||
}
|
||||
|
@ -420,7 +420,7 @@ func TestUpDirty(t *testing.T) {
|
|||
}
|
||||
|
||||
err := m.Up()
|
||||
if err != ErrDirty {
|
||||
if _, ok := err.(ErrDirty); !ok {
|
||||
t.Fatalf("expected ErrDirty, got %v", err)
|
||||
}
|
||||
}
|
||||
|
@ -433,7 +433,7 @@ func TestDownDirty(t *testing.T) {
|
|||
}
|
||||
|
||||
err := m.Down()
|
||||
if err != ErrDirty {
|
||||
if _, ok := err.(ErrDirty); !ok {
|
||||
t.Fatalf("expected ErrDirty, got %v", err)
|
||||
}
|
||||
}
|
||||
|
@ -514,7 +514,7 @@ func TestRunDirty(t *testing.T) {
|
|||
}
|
||||
|
||||
err = m.Run(migr)
|
||||
if err != ErrDirty {
|
||||
if _, ok := err.(ErrDirty); !ok {
|
||||
t.Fatalf("expected ErrDirty, got %v", err)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue