Use new common function

This commit is contained in:
Brendan Abolivier 2017-07-17 17:49:36 +01:00
parent 81fec3bd8d
commit e115a12edc
No known key found for this signature in database
GPG key ID: 8EF1500759F70623

View file

@ -136,35 +136,19 @@ func (d *Database) removeMembershipsByEventIDs(eventIDs []string, txn *sql.Tx) e
// insertion and deletion has been successfully processed.
// Returns a SQL error if there was an issue with any part of the process
func (d *Database) UpdateMemberships(eventsToAdd []gomatrixserverlib.Event, idsToRemove []string) error {
txn, err := d.db.Begin()
if err != nil {
if e := txn.Rollback(); e != nil {
return e
}
return err
}
if err := d.removeMembershipsByEventIDs(idsToRemove, txn); err != nil {
if e := txn.Rollback(); e != nil {
return e
}
return err
}
for _, event := range eventsToAdd {
if err := d.newMembership(event, txn); err != nil {
if e := txn.Rollback(); e != nil {
return e
}
return common.WithTransaction(d.db, func(txn *sql.Tx) error {
if err := d.removeMembershipsByEventIDs(idsToRemove, txn); err != nil {
return err
}
}
if err := txn.Commit(); err != nil {
return err
}
for _, event := range eventsToAdd {
if err := d.newMembership(event, txn); err != nil {
return err
}
}
return nil
return nil
})
}
// newMembership will save a new membership in the database if the given state