Move membership update to roomserver consumer

This commit is contained in:
Brendan Abolivier 2017-07-20 11:57:08 +01:00
parent 40a806ce78
commit f8cb14678c
No known key found for this signature in database
GPG key ID: 8EF1500759F70623
3 changed files with 9 additions and 7 deletions

View file

@ -39,8 +39,10 @@ CREATE TABLE IF NOT EXISTS memberships (
CREATE UNIQUE INDEX IF NOT EXISTS membership_event_id ON memberships(event_id);
`
const insertMembershipSQL = "" +
"INSERT INTO memberships(localpart, room_id, event_id) VALUES ($1, $2, $3)"
const insertMembershipSQL = `
INSERT INTO memberships(localpart, room_id, event_id) VALUES ($1, $2, $3)
ON CONFLICT (localpart, room_id) DO UPDATE SET event_id = EXCLUDED.event_id
`
const selectMembershipSQL = "" +
"SELECT * from memberships WHERE localpart = $1 AND room_id = $2"

View file

@ -107,6 +107,11 @@ func (s *OutputRoomEvent) lookupStateEvents(
) ([]gomatrixserverlib.Event, error) {
// Fast path if there aren't any new state events.
if len(addsStateEventIDs) == 0 {
// If the event is a membership update (e.g. for a profile update), it won't
// show up in AddsStateEventIDs, so we need to add it manually
if event.Type() == "m.room.member" {
return []gomatrixserverlib.Event{event}, nil
}
return nil, nil
}

View file

@ -314,12 +314,7 @@ func buildMembershipEvents(
}
builder.AuthEvents = refs
// Generate a new event ID and set it in the database
eventID := fmt.Sprintf("$%s:%s", util.RandomString(16), cfg.Matrix.ServerName)
if err = db.UpdateMembership(membership.EventID, eventID); err != nil {
return nil, err
}
now := time.Now()
event, err := builder.Build(eventID, now, cfg.Matrix.ServerName, cfg.Matrix.KeyID, cfg.Matrix.PrivateKey)
if err != nil {