Skip to content
This repository was archived by the owner on Jun 28, 2018. It is now read-only.

Commit eb02bc7

Browse files
committed
allow to force NilVersion
1 parent 55f5425 commit eb02bc7

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed

Diff for: cli/commands.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func dropCmd(m *migrate.Migrate) {
4242
}
4343
}
4444

45-
func forceCmd(m *migrate.Migrate, v uint) {
45+
func forceCmd(m *migrate.Migrate, v int) {
4646
if err := m.Force(v); err != nil {
4747
log.fatalErr(err)
4848
}

Diff for: cli/main.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,16 @@ Commands:
182182
log.fatal("error: please specify version argument V")
183183
}
184184

185-
v, err := strconv.ParseUint(flag.Arg(1), 10, 64)
185+
v, err := strconv.ParseInt(flag.Arg(1), 10, 64)
186186
if err != nil {
187187
log.fatal("error: can't read version argument V")
188188
}
189189

190-
forceCmd(migrater, uint(v))
190+
if v < -1 {
191+
log.fatal("error: argument V must be >= -1")
192+
}
193+
194+
forceCmd(migrater, int(v))
191195

192196
if log.verbose {
193197
log.Println("Finished after", time.Now().Sub(startTime))

Diff for: database/driver.go

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ type Driver interface {
6363

6464
// SetVersion saves version and dirty state.
6565
// Migrate will call this function before and after each call to Run.
66+
// version must be >= -1. -1 means NilVersion.
6667
SetVersion(version int, dirty bool) error
6768

6869
// Version returns the currently active version and if the database is dirty.

Diff for: migrate.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -355,12 +355,16 @@ func (m *Migrate) Run(migration ...*Migration) error {
355355
// Force sets a migration version.
356356
// It does not check any currently active version in database.
357357
// It does not check if the database is dirty.
358-
func (m *Migrate) Force(version uint) error {
358+
func (m *Migrate) Force(version int) error {
359+
if version < -1 {
360+
panic("version must be >= -1")
361+
}
362+
359363
if err := m.lock(); err != nil {
360364
return err
361365
}
362366

363-
if err := m.databaseDrv.SetVersion(int(version), false); err != nil {
367+
if err := m.databaseDrv.SetVersion(version, false); err != nil {
364368
return m.unlockErr(err)
365369
}
366370

0 commit comments

Comments
 (0)