diff options
author | Neil Alexander <neilalexander@users.noreply.github.com> | 2021-01-20 20:43:20 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-20 20:43:20 +0000 |
commit | 8fe51019ad603d44fa30d092fa662be6c668872d (patch) | |
tree | ce2ebe64382511a2545f35e873c110cf6fcf3dc2 /syncapi/storage/shared/syncserver.go | |
parent | c08e38df2c5b00521e15c15a76d5234860b34bd4 (diff) |
Add sync API memberships table (#1726)
Diffstat (limited to 'syncapi/storage/shared/syncserver.go')
-rw-r--r-- | syncapi/storage/shared/syncserver.go | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/syncapi/storage/shared/syncserver.go b/syncapi/storage/shared/syncserver.go index 9df07693..239f6812 100644 --- a/syncapi/storage/shared/syncserver.go +++ b/syncapi/storage/shared/syncserver.go @@ -48,6 +48,7 @@ type Database struct { SendToDevice tables.SendToDevice Filter tables.Filter Receipts tables.Receipts + Memberships tables.Memberships } func (d *Database) readOnlySnapshot(ctx context.Context) (*sql.Tx, error) { @@ -383,8 +384,8 @@ func (d *Database) WriteEvent( return fmt.Errorf("d.OutputEvents.InsertEvent: %w", err) } pduPosition = pos - - if err = d.Topology.InsertEventInTopology(ctx, txn, ev, pos); err != nil { + var topoPosition types.StreamPosition + if topoPosition, err = d.Topology.InsertEventInTopology(ctx, txn, ev, pos); err != nil { return fmt.Errorf("d.Topology.InsertEventInTopology: %w", err) } @@ -397,7 +398,7 @@ func (d *Database) WriteEvent( return nil } - return d.updateRoomState(ctx, txn, removeStateEventIDs, addStateEvents, pduPosition) + return d.updateRoomState(ctx, txn, removeStateEventIDs, addStateEvents, pduPosition, topoPosition) }) return pduPosition, returnErr @@ -409,6 +410,7 @@ func (d *Database) updateRoomState( removedEventIDs []string, addedEvents []*gomatrixserverlib.HeaderedEvent, pduPosition types.StreamPosition, + topoPosition types.StreamPosition, ) error { // remove first, then add, as we do not ever delete state, but do replace state which is a remove followed by an add. for _, eventID := range removedEventIDs { @@ -429,6 +431,9 @@ func (d *Database) updateRoomState( return fmt.Errorf("event.Membership: %w", err) } membership = &value + if err = d.Memberships.UpsertMembership(ctx, txn, event, pduPosition, topoPosition); err != nil { + return fmt.Errorf("d.Memberships.UpsertMembership: %w", err) + } } if err := d.CurrentRoomState.UpsertRoomState(ctx, txn, event, membership, pduPosition); err != nil { |