firebase-admin-python icon indicating copy to clipboard operation
firebase-admin-python copied to clipboard

[FR] Complex database queries should support realtime updates

Open bringert opened this issue 3 years ago • 1 comments

Is your feature request related to a problem? Please describe. There is currently no listen() function for complex queries. This means that you for example cannot listen for realtime updates on the result of order_by_child().

This feature is supported by the underlying REST API, and also in the pyrebase Python client library.

Describe the solution you'd like A listen() function in the Query class.

Describe alternatives you've considered

  • Use pyrebase
  • Do sorting and filtering client-side

Additional context

Adding the following code into the Query class seems to be enough to implement this feature:

  def listen(self, callback):
       return self._listen_with_session(callback)

   def _listen_with_session(self, callback, session=None):
       url = self._client.base_url + self._pathurl
       if not session:
           session = self._client.create_listener_session()

       try:
           sse = _sseclient.SSEClient(url, session, params=self._querystr)
           return ListenerRegistration(callback, sse)
       except requests.exceptions.RequestException as error:
           raise _Client.handle_rtdb_error(error)

bringert avatar Dec 28 '21 17:12 bringert

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

google-oss-bot avatar Dec 28 '21 17:12 google-oss-bot