|
|
@@ -233,24 +233,23 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): |
|
|
|
UNION SELECT room_id from appservice_room_list |
|
|
|
""" |
|
|
|
|
|
|
|
sql = """ |
|
|
|
sql = f""" |
|
|
|
SELECT |
|
|
|
COUNT(*) |
|
|
|
FROM ( |
|
|
|
%(published_sql)s |
|
|
|
{published_sql} |
|
|
|
) published |
|
|
|
INNER JOIN room_stats_state USING (room_id) |
|
|
|
INNER JOIN room_stats_current USING (room_id) |
|
|
|
WHERE |
|
|
|
( |
|
|
|
join_rules = 'public' OR join_rules = '%(knock_join_rule)s' |
|
|
|
join_rules = '{JoinRules.PUBLIC}' |
|
|
|
OR join_rules = '{JoinRules.KNOCK}' |
|
|
|
OR join_rules = '{JoinRules.KNOCK_RESTRICTED}' |
|
|
|
OR history_visibility = 'world_readable' |
|
|
|
) |
|
|
|
AND joined_members > 0 |
|
|
|
""" % { |
|
|
|
"published_sql": published_sql, |
|
|
|
"knock_join_rule": JoinRules.KNOCK, |
|
|
|
} |
|
|
|
""" |
|
|
|
|
|
|
|
txn.execute(sql, query_args) |
|
|
|
return cast(Tuple[int], txn.fetchone())[0] |
|
|
@@ -369,29 +368,29 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): |
|
|
|
if where_clauses: |
|
|
|
where_clause = " AND " + " AND ".join(where_clauses) |
|
|
|
|
|
|
|
sql = """ |
|
|
|
dir = "DESC" if forwards else "ASC" |
|
|
|
sql = f""" |
|
|
|
SELECT |
|
|
|
room_id, name, topic, canonical_alias, joined_members, |
|
|
|
avatar, history_visibility, guest_access, join_rules |
|
|
|
FROM ( |
|
|
|
%(published_sql)s |
|
|
|
{published_sql} |
|
|
|
) published |
|
|
|
INNER JOIN room_stats_state USING (room_id) |
|
|
|
INNER JOIN room_stats_current USING (room_id) |
|
|
|
WHERE |
|
|
|
( |
|
|
|
join_rules = 'public' OR join_rules = '%(knock_join_rule)s' |
|
|
|
join_rules = '{JoinRules.PUBLIC}' |
|
|
|
OR join_rules = '{JoinRules.KNOCK}' |
|
|
|
OR join_rules = '{JoinRules.KNOCK_RESTRICTED}' |
|
|
|
OR history_visibility = 'world_readable' |
|
|
|
) |
|
|
|
AND joined_members > 0 |
|
|
|
%(where_clause)s |
|
|
|
ORDER BY joined_members %(dir)s, room_id %(dir)s |
|
|
|
""" % { |
|
|
|
"published_sql": published_sql, |
|
|
|
"where_clause": where_clause, |
|
|
|
"dir": "DESC" if forwards else "ASC", |
|
|
|
"knock_join_rule": JoinRules.KNOCK, |
|
|
|
} |
|
|
|
{where_clause} |
|
|
|
ORDER BY |
|
|
|
joined_members {dir}, |
|
|
|
room_id {dir} |
|
|
|
""" |
|
|
|
|
|
|
|
if limit is not None: |
|
|
|
query_args.append(limit) |
|
|
|