mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-16 18:43:10 -06:00
Update update relation logic
This commit is contained in:
parent
5af68b1e0a
commit
46a2204064
|
|
@ -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
|
})
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue