Defer certains appels à tx.Rollback #47

Merged
vlbeaudoin merged 1 commit from fix/defer-rollback into main 2024-02-14 14:13:54 -05:00

View file

@ -78,24 +78,21 @@ func (d *DataClient) InsertMembres(membres []models.Membre) (int64, error) {
var rowsInserted int64 var rowsInserted int64
tx, err := d.DB.Beginx() tx, err := d.DB.Beginx()
if err != nil { if err != nil {
tx.Rollback()
return rowsInserted, err return rowsInserted, err
} }
defer tx.Rollback()
for _, membre := range membres { for _, membre := range membres {
if membre.ID == "" { if membre.ID == "" {
tx.Rollback()
return 0, errors.New("Cannot insert membre with no membre_id") return 0, errors.New("Cannot insert membre with no membre_id")
} }
result, err := tx.NamedExec("INSERT INTO membres (id, last_name, first_name, prefered_name, programme_id) VALUES (:id, :last_name, :first_name, :prefered_name, :programme_id) ON CONFLICT (id) DO NOTHING;", &membre) result, err := tx.NamedExec("INSERT INTO membres (id, last_name, first_name, prefered_name, programme_id) VALUES (:id, :last_name, :first_name, :prefered_name, :programme_id) ON CONFLICT (id) DO NOTHING;", &membre)
if err != nil { if err != nil {
tx.Rollback()
return 0, err return 0, err
} }
rows, err := result.RowsAffected() rows, err := result.RowsAffected()
if err != nil { if err != nil {
tx.Rollback()
return 0, err return 0, err
} }
@ -114,25 +111,22 @@ func (d *DataClient) InsertProgrammes(programmes []models.Programme) (int64, err
var rowsInserted int64 var rowsInserted int64
tx, err := d.DB.Beginx() tx, err := d.DB.Beginx()
if err != nil { if err != nil {
tx.Rollback()
return rowsInserted, err return rowsInserted, err
} }
defer tx.Rollback()
for _, programme := range programmes { for _, programme := range programmes {
if programme.ID == "" { if programme.ID == "" {
tx.Rollback()
return 0, errors.New("Cannot insert programme with no programme_id") return 0, errors.New("Cannot insert programme with no programme_id")
} }
result, err := tx.NamedExec("INSERT INTO programmes (id, titre) VALUES (:id, :titre) ON CONFLICT DO NOTHING;", &programme) result, err := tx.NamedExec("INSERT INTO programmes (id, titre) VALUES (:id, :titre) ON CONFLICT DO NOTHING;", &programme)
if err != nil { if err != nil {
tx.Rollback()
return 0, err return 0, err
} }
rows, err := result.RowsAffected() rows, err := result.RowsAffected()
if err != nil { if err != nil {
tx.Rollback()
return 0, err return 0, err
} }