Make event stream storage return all membership events about the user, regardless of if they were in the room or not.

This commit is contained in:
Erik Johnston 2014-08-20 16:07:20 +01:00
parent 7371e68f55
commit ebd3c41ede
1 changed files with 6 additions and 4 deletions

View File

@ -151,10 +151,12 @@ class StreamStore(SQLBaseStore):
"WHERE m.user_id = ?" "WHERE m.user_id = ?"
) )
invites_sql = ( # We also want to get any membership events about that user, e.g.
# invites or leave notifications.
membership_sql = (
"SELECT m.event_id FROM room_memberships as m " "SELECT m.event_id FROM room_memberships as m "
"INNER JOIN current_state_events as c ON m.event_id = c.event_id " "INNER JOIN current_state_events as c ON m.event_id = c.event_id "
"WHERE m.user_id = ? AND m.membership = ?" "WHERE m.user_id = ? "
) )
if limit: if limit:
@ -178,13 +180,13 @@ class StreamStore(SQLBaseStore):
"ORDER BY stream_ordering ASC LIMIT %(limit)d " "ORDER BY stream_ordering ASC LIMIT %(limit)d "
) % { ) % {
"current": current_room_membership_sql, "current": current_room_membership_sql,
"invites": invites_sql, "invites": membership_sql,
"limit": limit "limit": limit
} }
rows = yield self._execute_and_decode( rows = yield self._execute_and_decode(
sql, sql,
user_id, user_id, Membership.INVITE, from_id, to_id user_id, user_id, from_id, to_id
) )
ret = [self._parse_event_from_row(r) for r in rows] ret = [self._parse_event_from_row(r) for r in rows]