diff options
author | Amber Brown <hawkowl@atleastfornow.net> | 2019-04-05 00:21:16 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-05 00:21:16 +1100 |
commit | a33a5abc4cd0a73fdf851850da21d749d842ae32 (patch) | |
tree | 4ccfc5a2403a17d4a529608ecc89bb4506c90f2e /synapse/storage/__init__.py | |
parent | Merge pull request #5002 from matrix-org/erikj/delete_group (diff) | |
download | synapse-a33a5abc4cd0a73fdf851850da21d749d842ae32.tar.xz |
Clean up the database pagination code (#5007)
* rewrite & simplify * changelog * cleanup potential sql injection
Diffstat (limited to 'synapse/storage/__init__.py')
-rw-r--r-- | synapse/storage/__init__.py | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py index e9aa2fc9dd..c432041b4e 100644 --- a/synapse/storage/__init__.py +++ b/synapse/storage/__init__.py @@ -18,6 +18,8 @@ import calendar import logging import time +from twisted.internet import defer + from synapse.api.constants import PresenceState from synapse.storage.devices import DeviceStore from synapse.storage.user_erasure_store import UserErasureStore @@ -453,6 +455,7 @@ class DataStore( desc="get_users", ) + @defer.inlineCallbacks def get_users_paginate(self, order, start, limit): """Function to reterive a paginated list of users from users list. This will return a json object, which contains @@ -465,16 +468,19 @@ class DataStore( Returns: defer.Deferred: resolves to json object {list[dict[str, Any]], count} """ - is_guest = 0 - i_start = (int)(start) - i_limit = (int)(limit) - return self.get_user_list_paginate( + users = yield self.runInteraction( + "get_users_paginate", + self._simple_select_list_paginate_txn, table="users", - keyvalues={"is_guest": is_guest}, - pagevalues=[order, i_limit, i_start], + keyvalues={"is_guest": False}, + orderby=order, + start=start, + limit=limit, retcols=["name", "password_hash", "is_guest", "admin"], - desc="get_users_paginate", ) + count = yield self.runInteraction("get_users_paginate", self.get_user_count_txn) + retval = {"users": users, "total": count} + defer.returnValue(retval) def search_users(self, term): """Function to search users list for one or more users with |