@@ -96,30 +96,26 @@ func (db *postgres) ApplyMigrations(ctx context.Context, files []file.File, up b
9696 return errors .Annotate (err , "starting database transaction failed" )
9797 }
9898
99+ rollback := func (reasonErr error ) error {
100+ if err := tx .Rollback (); err != nil {
101+ return errors .Annotate (err , "rolling back transaction failed" )
102+ }
103+
104+ return reasonErr
105+ }
106+
99107 for _ , file := range files {
100108 if _ , err := tx .ExecContext (ctx , file .SQL ); err != nil {
101- if rollbackErr := tx .Rollback (); rollbackErr != nil {
102- return errors .Annotate (err , "rolling back transaction failed" )
103- }
104-
105- return errors .Annotate (err , "executing migration failed" )
109+ return rollback (errors .Annotate (err , "executing migration failed" ))
106110 }
107111
108112 if _ , err := tx .ExecContext (ctx , applyMigrationSQL [up ], file .Version ); err != nil {
109- if rollbackErr := tx .Rollback (); rollbackErr != nil {
110- return errors .Annotate (err , "rolling back transaction failed" )
111- }
112-
113- return errors .Annotate (err , "executing migration failed" )
113+ return rollback (errors .Annotate (err , "executing migration failed" ))
114114 }
115115 }
116116
117117 if err := tx .Commit (); err != nil {
118- if rollbackErr := tx .Rollback (); rollbackErr != nil {
119- return errors .Annotate (err , "rolling back transaction failed" )
120- }
121-
122- return errors .Annotate (err , "committing migrations failed" )
118+ return rollback (errors .Annotate (err , "committing migrations failed" ))
123119 }
124120
125121 return nil
0 commit comments