Merge branch 'master' into matthew/peeking

This commit is contained in:
Neil Alexander 2020-09-04 14:39:44 +01:00
commit 9ad05e708d
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
13 changed files with 93 additions and 407 deletions

View file

@ -79,10 +79,10 @@ const selectRoomIDsSQL = "" +
"SELECT room_id FROM roomserver_rooms"
const bulkSelectRoomIDsSQL = "" +
"SELECT room_id FROM roomserver_rooms WHERE room_nid IN ($1)"
"SELECT room_id FROM roomserver_rooms WHERE room_nid = ANY($1)"
const bulkSelectRoomNIDsSQL = "" +
"SELECT room_nid FROM roomserver_rooms WHERE room_id IN ($1)"
"SELECT room_nid FROM roomserver_rooms WHERE room_id = ANY($1)"
type roomStatements struct {
insertRoomNIDStmt *sql.Stmt

View file

@ -774,15 +774,18 @@ func (d *Database) GetRoomsByMembership(ctx context.Context, userID, membership
}
stateKeyNID, err := d.EventStateKeysTable.SelectEventStateKeyNID(ctx, nil, userID)
if err != nil {
if err == sql.ErrNoRows {
return nil, nil
}
return nil, fmt.Errorf("GetRoomsByMembership: cannot map user ID to state key NID: %w", err)
}
roomNIDs, err := d.MembershipTable.SelectRoomsWithMembership(ctx, stateKeyNID, membershipState)
if err != nil {
return nil, err
return nil, fmt.Errorf("GetRoomsByMembership: failed to SelectRoomsWithMembership: %w", err)
}
roomIDs, err := d.RoomsTable.BulkSelectRoomIDs(ctx, roomNIDs)
if err != nil {
return nil, err
return nil, fmt.Errorf("GetRoomsByMembership: failed to lookup room nids: %w", err)
}
if len(roomIDs) != len(roomNIDs) {
return nil, fmt.Errorf("GetRoomsByMembership: missing room IDs, got %d want %d", len(roomIDs), len(roomNIDs))

View file

@ -41,7 +41,7 @@ const membershipSchema = `
`
var selectJoinedUsersSetForRoomsSQL = "" +
"SELECT target_nid, COUNT(room_nid) FROM roomserver_membership WHERE room_nid = ANY($1) AND" +
"SELECT target_nid, COUNT(room_nid) FROM roomserver_membership WHERE room_nid IN ($1) AND" +
" membership_nid = " + fmt.Sprintf("%d", tables.MembershipStateJoin) + " GROUP BY target_nid"
// Insert a row in to membership table so that it can be locked by the