Files
Argenta/docs/root/api/bridge.rst
kolo ce7e24b924 feat: impl docs (#4)
The entire public api is covered with documentation in two languages - Russian and English.

the library now supports the latest three versions of python - 3.12, 3.13 and 3.14

minor design changes: now, when a Boolean flag is entered, its value is an empty string, not None.

tests have been adapted to the supported versions of python, readmi has been redesigned in two languages, German is no longer available.
2025-12-04 21:55:19 +03:00

63 lines
2.6 KiB
ReStructuredText

.. _root_api_bridge:
DataBridge
==========
``DataBridge`` — это сущность, предоставляющая временное хранилище данных, которое существует в рамках одной сессии приложения (от запуска до выхода). Она предназначена для обмена данными между обработчиками.
Основной способ получения доступа к ``DataBridge`` — через DI.
.. code-block:: python
:linenos:
from argenta.di import FromDishka
from argenta import DataBridge, Response
# ... setting up router and other
def my_handler(response: Response, data_bridge: FromDishka[DataBridge]):
# ... your code
**Практический пример: Аутентификация**
Рассмотрим пример, где команда `login` сохраняет токен аутентификации, а команда `get-profile` использует его.
.. literalinclude:: ../../code_snippets/response/data_sharing.py
:language: python
:linenos:
**Как это работает:**
1. При вызове обработчика ``dishka`` автоматически внедряет экземпляр ``DataBridge``.
2. Команда ``login --username <имя>`` вызывает ``login_handler``, который через внедрённый ``data_bridge`` сохраняет токен.
3. Команда ``get-profile`` вызывает ``get_profile_handler``, который так же получает ``data_bridge`` и извлекает из него токен.
-----------
.. py:class:: DataBridge
.. py:method:: __init__(self, initial_data: dict | None = None)
:no-index:
Инициализирует хранилище. При использовании через DI вызывается автоматически.
.. py:method:: update(self, data: dict) -> None
Обновляет хранилище данными из словаря.
.. py:method:: get_all(self) -> dict
Возвращает все данные из хранилища.
.. py:method:: get_by_key(self, key: str) -> Any
Возвращает значение по ключу или ``None``, если ключ не найден.
.. py:method:: delete_by_key(self, key: str) -> None
Удаляет значение по ключу. Вызывает ``KeyError``, если ключ не найден.
.. py:method:: clear_all(self) -> None
Полностью очищает хранилище.