memory (sqla): Improve handling of RSM in get_items:

- update queries to handle correctly the `before=""` case and RSM order (older to newer)
  while having correct order when `max_items` without RSM is used (then order it newer to
  older).
- put RSM code path in a separated method for better readability.
- check values of `max_items` and `from_index` and raise exception is they are not
  positive
- when using `before` or `after`, check that the item ID used as reference exists, and
  raise an exception otherwise.
- updated docstring to reflect the new behaviour.
- update pubsub cache use of `get_items` with RSM, to adapt to new behaviour.

rel 476
This commit is contained in:
Goffi 2026-04-07 11:12:30 +02:00
commit 57d3d8e07e

View file

@ -505,20 +505,15 @@ class PubsubCache:
node, max_items=max_items, order_by=extra.get(C.KEY_ORDER_BY)
)
else:
desc = False
if rsm_request.before == "":
before = None
desc = True
else:
before = rsm_request.before
# RSM request
pubsub_items, metadata = await self.host.memory.storage.get_items(
node,
max_items=rsm_request.max,
before=before,
before=rsm_request.before,
after=rsm_request.after,
from_index=rsm_request.index,
order_by=extra.get(C.KEY_ORDER_BY),
desc=desc,
desc=False,
force_rsm=True,
)