Fix migrate migrationDidRun bug on postgres (#818)

* fix migrate migrationDidRun bug on postgres

* fix missing error handle
This commit is contained in:
Lunny Xiao 2018-01-29 19:49:01 -06:00 committed by GitHub
parent d4149d1eee
commit cd46810bf9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 7 deletions

View File

@ -122,7 +122,10 @@ func (m *Migrate) RollbackLast() error {
func (m *Migrate) getLastRunnedMigration() (*Migration, error) { func (m *Migrate) getLastRunnedMigration() (*Migration, error) {
for i := len(m.migrations) - 1; i >= 0; i-- { for i := len(m.migrations) - 1; i >= 0; i-- {
migration := m.migrations[i] migration := m.migrations[i]
if m.migrationDidRun(migration) { run, err := m.migrationDidRun(migration)
if err != nil {
return nil, err
} else if run {
return migration, nil return migration, nil
} }
} }
@ -165,7 +168,12 @@ func (m *Migrate) runMigration(migration *Migration) error {
return ErrMissingID return ErrMissingID
} }
if !m.migrationDidRun(migration) { run, err :=m.migrationDidRun(migration)
if err != nil {
return err
}
if !run {
if err := migration.Migrate(m.db); err != nil { if err := migration.Migrate(m.db); err != nil {
return err return err
} }
@ -193,11 +201,9 @@ func (m *Migrate) createMigrationTableIfNotExists() error {
return nil return nil
} }
func (m *Migrate) migrationDidRun(mig *Migration) bool { func (m *Migrate) migrationDidRun(mig *Migration) (bool, error) {
row := m.db.DB().QueryRow(fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE %s = ?", m.options.TableName, m.options.IDColumnName), mig.ID) count, err := m.db.SQL(fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE %s = ?", m.options.TableName, m.options.IDColumnName), mig.ID).Count()
var count int return count > 0, err
row.Scan(&count)
return count > 0
} }
func (m *Migrate) isFirstRun() bool { func (m *Migrate) isFirstRun() bool {