stream-chat-python icon indicating copy to clipboard operation
stream-chat-python copied to clipboard

Add a new way to query all users

Open dbrezack opened this issue 2 years ago • 0 comments

Problem explanation

Zendesk ticket: 43044 query_channels possible infinite loop by always returning results over 1000 eg Asking for offset: 1000000 will return users even when only 2000 users may exist in the system.

https://support.getstream.io/hc/en-us/articles/4414446580119-Querying-for-users-channels-past-the-offset-1000-limit-Chat

I would suggest that the library implement an easy way to query all users with offsets greater than 1000, maybe a python iterable.

Steps to reproduce

I'm well aware this code is not very clean but it does show the issue. Since query channels will always return items in the array you don't know when to stop.

channels = []
offset = 0
limit = max_limit_to_fetch_channels
channels_fetched_count = limit
while channels_fetched_count > 0 or channels_fetched_count == limit:
    channels_fetched = query_channels(
        filter_conditions=......,
        sort={"last_message_at": -1},
        message_limit=1,
        channel_limit=limit,
        offset=offset,
    )
    channels.extend(channels_fetched)
    offset += limit
    channels_fetched_count = len(channels_fetched)

Environment info

Library version: stream-chat==4.8.0

dbrezack avatar Nov 30 '23 16:11 dbrezack