Track all changes

This commit is contained in:
Neil Alexander 2022-10-10 16:07:45 +01:00
parent cf175bb400
commit aef6187da6
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -68,6 +68,7 @@ func (d *Database) UpdateRoom(
removeHosts []string, removeHosts []string,
purgeRoomFirst bool, purgeRoomFirst bool,
) (joinedHosts []types.JoinedHost, err error) { ) (joinedHosts []types.JoinedHost, err error) {
returnHosts := map[string]types.JoinedHost{}
err = d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error { err = d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
if purgeRoomFirst { if purgeRoomFirst {
// If the event is a create event then we'll delete all of the existing // If the event is a create event then we'll delete all of the existing
@ -80,19 +81,30 @@ func (d *Database) UpdateRoom(
if joinedHosts, err = d.FederationJoinedHosts.SelectJoinedHostsWithTx(ctx, txn, roomID); err != nil { if joinedHosts, err = d.FederationJoinedHosts.SelectJoinedHostsWithTx(ctx, txn, roomID); err != nil {
return err return err
} }
} for _, add := range joinedHosts {
if err = d.FederationJoinedHosts.DeleteJoinedHosts(ctx, txn, removeHosts); err != nil { returnHosts[string(add.ServerName)] = add
return err }
if len(removeHosts) > 0 {
if err = d.FederationJoinedHosts.DeleteJoinedHosts(ctx, txn, removeHosts); err != nil {
return err
}
for _, remove := range removeHosts {
delete(returnHosts, remove)
}
}
} }
for _, add := range addHosts { for _, add := range addHosts {
err = d.FederationJoinedHosts.InsertJoinedHosts(ctx, txn, roomID, add.MemberEventID, add.ServerName) err = d.FederationJoinedHosts.InsertJoinedHosts(ctx, txn, roomID, add.MemberEventID, add.ServerName)
if err != nil { if err != nil {
return err return err
} }
joinedHosts = append(joinedHosts, add) returnHosts[string(add.ServerName)] = add
} }
return nil return nil
}) })
for _, host := range returnHosts {
joinedHosts = append(joinedHosts, host)
}
return return
} }