From ffc23a1dd4d35dcc755a19151bdfba3db85a4089 Mon Sep 17 00:00:00 2001 From: quentin on chickenita Date: Thu, 4 Jul 2024 12:39:13 +0200 Subject: [PATCH] add function to persistence Classes (table_lenght() and search_ids_by_value()) --- pypeman/persistence.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/pypeman/persistence.py b/pypeman/persistence.py index a4c19dc..b692c68 100644 --- a/pypeman/persistence.py +++ b/pypeman/persistence.py @@ -79,6 +79,16 @@ async def get(self, namespace, key, default=SENTINEL): else: return self._data[namespace][key] + async def search_ids_by_value(self, namespace, value): + found_ids = [] + for id, val in self._data[namespace].items(): + if val == value: + found_ids.append(id) + return found_ids + + async def table_lenght(self, namespace): + return len(self._data[namespace]) + class SqliteBackend(): """ @@ -112,6 +122,18 @@ def _sync_get(self, namespace, key, default): else: return pdict[key] + async def _search_ids_by_value(self, namespace, value): + found_ids = [] + with SqliteDict(self.path, tablename=namespace) as pdict: + for id, val in pdict.items(): + if val == value: + found_ids.append(id) + return found_ids + + def _get_table_lenght(self, namespace): + with SqliteDict(self.path, tablename=namespace) as pdict: + return len(pdict) + async def store(self, namespace, key, value): """ Store the value in a dict saved in sqlite db. @@ -130,3 +152,9 @@ async def get(self, namespace, key, default=SENTINEL): :param default: Default value if key missing. """ return await self.loop.run_in_executor(self.executor, self._sync_get, namespace, key, default) + + async def table_lenght(self, namespace): + return await self.loop.run_in_executor(self.executor, self._get_table_lenght, namespace) + + async def search_ids_by_value(self, namespace): + return await self.loop.run_in_executor(self.executor, self._search_ids_by_value, namespace)