mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-08-01 22:02:46 +00:00
Remove membership table from account DB (#1172)
* Remove membership table from account DB And make code which needs that data use the currentstate server * Unbreak tests; use a membership enum for space
This commit is contained in:
parent
ca5bbffd8d
commit
6f49758b90
28 changed files with 211 additions and 722 deletions
|
@ -17,6 +17,7 @@ package shared
|
|||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
|
||||
"github.com/matrix-org/dendrite/currentstateserver/storage/tables"
|
||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||
|
@ -47,19 +48,31 @@ func (d *Database) StoreStateEvents(ctx context.Context, addStateEvents []gomatr
|
|||
// ignore non state events
|
||||
continue
|
||||
}
|
||||
var membership *string
|
||||
var membershipEnum int
|
||||
if event.Type() == "m.room.member" {
|
||||
value, err := event.Membership()
|
||||
membership, err := event.Membership()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
membership = &value
|
||||
enum, ok := tables.MembershipToEnum[membership]
|
||||
if !ok {
|
||||
return fmt.Errorf("unknown membership: %s", membership)
|
||||
}
|
||||
membershipEnum = enum
|
||||
}
|
||||
|
||||
if err := d.CurrentRoomState.UpsertRoomState(ctx, txn, event, membership); err != nil {
|
||||
if err := d.CurrentRoomState.UpsertRoomState(ctx, txn, event, membershipEnum); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (d *Database) GetRoomsByMembership(ctx context.Context, userID, membership string) ([]string, error) {
|
||||
enum, ok := tables.MembershipToEnum[membership]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unknown membership: %s", membership)
|
||||
}
|
||||
return d.CurrentRoomState.SelectRoomIDsWithMembership(ctx, nil, userID, enum)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue