Add number of local devices to Room Details Admin API (#8886)

This commit is contained in:
Dirk Klimpel 2020-12-11 11:42:47 +01:00 committed by GitHub
parent 1d55c7b567
commit 0a34cdfc66
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 138 additions and 27 deletions

View file

@ -57,6 +57,38 @@ class DeviceWorkerStore(SQLBaseStore):
self._prune_old_outbound_device_pokes, 60 * 60 * 1000
)
async def count_devices_by_users(self, user_ids: Optional[List[str]] = None) -> int:
"""Retrieve number of all devices of given users.
Only returns number of devices that are not marked as hidden.
Args:
user_ids: The IDs of the users which owns devices
Returns:
Number of devices of this users.
"""
def count_devices_by_users_txn(txn, user_ids):
sql = """
SELECT count(*)
FROM devices
WHERE
hidden = '0' AND
"""
clause, args = make_in_list_sql_clause(
txn.database_engine, "user_id", user_ids
)
txn.execute(sql + clause, args)
return txn.fetchone()[0]
if not user_ids:
return 0
return await self.db_pool.runInteraction(
"count_devices_by_users", count_devices_by_users_txn, user_ids
)
async def get_device(self, user_id: str, device_id: str) -> Dict[str, Any]:
"""Retrieve a device. Only returns devices that are not marked as
hidden.