fix missing error handle

This commit is contained in:
Lunny Xiao 2018-01-10 14:22:07 +08:00
parent abd3221470
commit a3a230f2ab
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
1 changed files with 12 additions and 4 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,9 +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) {
count, err := m.db.SQL(fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE %s = ?", m.options.TableName, m.options.IDColumnName), mig.ID).Count() count, err := m.db.SQL(fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE %s = ?", m.options.TableName, m.options.IDColumnName), mig.ID).Count()
return count > 0 return count > 0, err
} }
func (m *Migrate) isFirstRun() bool { func (m *Migrate) isFirstRun() bool {