forked from MirrorHub/synapse
Convert get_rooms to use runInteraction so the transacion has a more helpful description
This commit is contained in:
parent
2bf0e85f3d
commit
8bbdf32849
1 changed files with 38 additions and 31 deletions
|
@ -82,39 +82,46 @@ class RoomStore(SQLBaseStore):
|
||||||
"topic" key if one is set, and a "name" key if one is set
|
"topic" key if one is set, and a "name" key if one is set
|
||||||
"""
|
"""
|
||||||
|
|
||||||
topic_subquery = (
|
def f(txn):
|
||||||
"SELECT topics.event_id as event_id, "
|
topic_subquery = (
|
||||||
"topics.room_id as room_id, topic "
|
"SELECT topics.event_id as event_id, "
|
||||||
"FROM topics "
|
"topics.room_id as room_id, topic "
|
||||||
"INNER JOIN current_state_events as c "
|
"FROM topics "
|
||||||
"ON c.event_id = topics.event_id "
|
"INNER JOIN current_state_events as c "
|
||||||
|
"ON c.event_id = topics.event_id "
|
||||||
|
)
|
||||||
|
|
||||||
|
name_subquery = (
|
||||||
|
"SELECT room_names.event_id as event_id, "
|
||||||
|
"room_names.room_id as room_id, name "
|
||||||
|
"FROM room_names "
|
||||||
|
"INNER JOIN current_state_events as c "
|
||||||
|
"ON c.event_id = room_names.event_id "
|
||||||
|
)
|
||||||
|
|
||||||
|
# We use non printing ascii character US () as a seperator
|
||||||
|
sql = (
|
||||||
|
"SELECT r.room_id, n.name, t.topic, "
|
||||||
|
"group_concat(a.room_alias, '') "
|
||||||
|
"FROM rooms AS r "
|
||||||
|
"LEFT JOIN (%(topic)s) AS t ON t.room_id = r.room_id "
|
||||||
|
"LEFT JOIN (%(name)s) AS n ON n.room_id = r.room_id "
|
||||||
|
"INNER JOIN room_aliases AS a ON a.room_id = r.room_id "
|
||||||
|
"WHERE r.is_public = ? "
|
||||||
|
"GROUP BY r.room_id "
|
||||||
|
) % {
|
||||||
|
"topic": topic_subquery,
|
||||||
|
"name": name_subquery,
|
||||||
|
}
|
||||||
|
|
||||||
|
c = txn.execute(sql, (is_public,))
|
||||||
|
|
||||||
|
return c.fetchall()
|
||||||
|
|
||||||
|
rows = yield self.runInteraction(
|
||||||
|
"get_rooms", f
|
||||||
)
|
)
|
||||||
|
|
||||||
name_subquery = (
|
|
||||||
"SELECT room_names.event_id as event_id, "
|
|
||||||
"room_names.room_id as room_id, name "
|
|
||||||
"FROM room_names "
|
|
||||||
"INNER JOIN current_state_events as c "
|
|
||||||
"ON c.event_id = room_names.event_id "
|
|
||||||
)
|
|
||||||
|
|
||||||
# We use non printing ascii character US () as a seperator
|
|
||||||
sql = (
|
|
||||||
"SELECT r.room_id, n.name, t.topic, "
|
|
||||||
"group_concat(a.room_alias, '') "
|
|
||||||
"FROM rooms AS r "
|
|
||||||
"LEFT JOIN (%(topic)s) AS t ON t.room_id = r.room_id "
|
|
||||||
"LEFT JOIN (%(name)s) AS n ON n.room_id = r.room_id "
|
|
||||||
"INNER JOIN room_aliases AS a ON a.room_id = r.room_id "
|
|
||||||
"WHERE r.is_public = ? "
|
|
||||||
"GROUP BY r.room_id "
|
|
||||||
) % {
|
|
||||||
"topic": topic_subquery,
|
|
||||||
"name": name_subquery,
|
|
||||||
}
|
|
||||||
|
|
||||||
rows = yield self._execute(None, sql, is_public)
|
|
||||||
|
|
||||||
ret = [
|
ret = [
|
||||||
{
|
{
|
||||||
"room_id": r[0],
|
"room_id": r[0],
|
||||||
|
|
Loading…
Reference in a new issue