mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 18:15:28 +03:00
ce7e24b924
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.
63 lines
2.6 KiB
ReStructuredText
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
|
|
|
|
Полностью очищает хранилище.
|