Run migrations in transactions

This commit is contained in:
Jan Zípek 2022-09-03 21:35:15 +02:00
parent 4a2b47e9b8
commit bb08f31e6b
Signed by: kamen
GPG Key ID: A17882625B33AC31
1 changed files with 16 additions and 2 deletions

View File

@ -35,17 +35,31 @@ func Initialize(databaseUrl string) (*sql.DB, error) {
return nil, err
}
_, err = db.Exec(migrationSource)
tx, err := db.Begin()
if err != nil {
return nil, err
}
defer tx.Rollback()
_, err = tx.Exec(migrationSource)
if err != nil {
return nil, fmt.Errorf("failed to run migration %s: %w", migrationId, err)
}
_, err = db.Exec("INSERT INTO migrations (id, run_at) VALUES (?, ?)", migrationId, time.Now().Unix())
_, err = tx.Exec("INSERT INTO migrations (id, run_at) VALUES (?, ?)", migrationId, time.Now().Unix())
if err != nil {
return nil, fmt.Errorf("failed to store run migration: %w", err)
}
err = tx.Commit()
if err != nil {
return nil, err
}
}
return db, nil