Update update relation logic

This commit is contained in:
Neil Alexander 2022-10-11 14:34:53 +01:00
parent 5af68b1e0a
commit 46a2204064
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -593,24 +593,28 @@ func (d *Database) UpdateRelations(ctx context.Context, event *gomatrixserverlib
if err := json.Unmarshal(event.Content(), &content); err != nil { if err := json.Unmarshal(event.Content(), &content); err != nil {
return fmt.Errorf("json.Unmarshal: %w", err) return fmt.Errorf("json.Unmarshal: %w", err)
} }
if content.Relations == nil { switch {
case content.Relations == nil:
return nil return nil
} case content.Relations.EventID == "":
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error { return nil
var err error case content.Relations.RelationType == "":
if event.Type() == gomatrixserverlib.MRoomRedaction { return nil
err = d.Relations.DeleteRelation( case event.Type() == gomatrixserverlib.MRoomRedaction:
ctx, txn, event.RoomID(), event.Redacts(), return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
) return d.Relations.DeleteRelation(ctx, txn, event.RoomID(), event.Redacts())
} else { })
default:
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
var err error
_, err = d.Relations.InsertRelation( _, err = d.Relations.InsertRelation(
ctx, txn, event.RoomID(), content.Relations.EventID, ctx, txn, event.RoomID(), content.Relations.EventID,
event.EventID(), content.Relations.RelationType, event.EventID(), content.Relations.RelationType,
) )
} if err != nil {
if err != nil { logrus.WithError(err).Errorf("Failed to update relations for room %s when processing event %s", event.RoomID(), event.EventID())
logrus.WithError(err).Errorf("Failed to update relations for room %s when processing event %s", event.RoomID(), event.EventID()) }
} return err
return err })
}) }
} }