@@ -742,17 +742,12 @@ func (db *DB) Rollback() error {
742742}
743743
744744// migrateOnly applies exactly one pending migration that matches the given version.
745- func (db * DB ) migrateOnly (version string ) error {
745+ func (db * DB ) migrateOnly (migrations [] Migration , version string ) error {
746746 drv , err := db .Driver ()
747747 if err != nil {
748748 return err
749749 }
750750
751- migrations , err := db .FindMigrations ()
752- if err != nil {
753- return err
754- }
755-
756751 var target * Migration
757752 highestApplied := ""
758753 for i , m := range migrations {
@@ -814,17 +809,12 @@ func (db *DB) migrateOnly(version string) error {
814809}
815810
816811// rollbackOnly rolls back exactly one applied migration that matches the given version.
817- func (db * DB ) rollbackOnly (version string ) error {
812+ func (db * DB ) rollbackOnly (migrations [] Migration , version string ) error {
818813 drv , err := db .Driver ()
819814 if err != nil {
820815 return err
821816 }
822817
823- migrations , err := db .FindMigrations ()
824- if err != nil {
825- return err
826- }
827-
828818 var target * Migration
829819 for i , m := range migrations {
830820 if m .Version == version {
@@ -880,16 +870,16 @@ func (db *DB) rollbackOnly(version string) error {
880870
881871// MigrateTo applies every pending migration whose version ≤ target (inclusive).
882872func (db * DB ) MigrateTo (target string ) error {
883- migs , err := db .FindMigrations ()
873+ migrations , err := db .FindMigrations ()
884874 if err != nil {
885875 return err
886876 }
887877
888- for _ , m := range migs {
878+ for _ , m := range migrations {
889879 if m .Applied || m .Version > target {
890880 continue
891881 }
892- if err := db .migrateOnly (m .Version ); err != nil {
882+ if err := db .migrateOnly (migrations , m .Version ); err != nil {
893883 return err
894884 }
895885 }
@@ -898,17 +888,17 @@ func (db *DB) MigrateTo(target string) error {
898888
899889// RollbackTo rolls back until version == target remains applied (exclusive).
900890func (db * DB ) RollbackTo (target string ) error {
901- migs , err := db .FindMigrations ()
891+ migrations , err := db .FindMigrations ()
902892 if err != nil {
903893 return err
904894 }
905895 // process latest-first
906- for i := len (migs ) - 1 ; i >= 0 ; i -- {
907- m := migs [i ]
896+ for i := len (migrations ) - 1 ; i >= 0 ; i -- {
897+ m := migrations [i ]
908898 if ! m .Applied || m .Version == target {
909899 continue
910900 }
911- if err := db .rollbackOnly (m .Version ); err != nil {
901+ if err := db .rollbackOnly (migrations , m .Version ); err != nil {
912902 return err
913903 }
914904 }
0 commit comments