code: func (m *Migrate) Migrate() error {
  	if err := m.createMigrationTableIfNotExists(); err != nil {
  		return err
  	}
  
  	if m.initSchema != nil && m.isFirstRun() {
  		return m.runInitSchema()
  	}
  
  	for _, migration := range m.migrations {
  		if err := m.runMigration(migration); err != nil {
  			return err
  		}
  	}
  	return nil
  }
docs: // Migrate executes all migrations that did not run yet.