Что такое драйвера в Jija?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Я собираюсь потихоньку рассказывать о своей идеалогии и привлекать больше людей к этому проекту, так что, буду рассказывать об интересных решениях, которые были применены в этом проекте.

Ну и по случаю появления драйвера для sqlalchemy, на этот раз речь пойдёт про драйвера, а если вы пропустили вступительную статью, советую прочитать сначала её для понимания.

Что мы имеем сейчас

Из-за того, что идеалогия jija предпологает модульность, тут просто не могла не появиться идея ввести драйвера для взаимодействия между модулями и ядром фреймворка.

Каждый драйвер в jija - класс, который наследуется от интерфейса и описывает методы для взаимодействия с логикой, которую должен выполнять модуль предоставляющий этот драйвер.

class DatabaseDriver(base.Driver):
    async def get_connection(self):
        raise NotImplementedError()

    async def migrate(self):
        raise NotImplementedError()

    async def update(self):
        raise NotImplementedError()

Так же драйвер может вставлять какие-либо свои компоненты в приложение и запускать свои задаче на старте приложения

class Driver:
    def setup(self, aiohttp_app: web.Application):
        return aiohttp_app

    async def preflight(self):
        pass

Таким образом мы можем написать драйвер для любой ORM, настроить в нём сборку, подключение к базе и

На момент написания статьи иы имеем два типа драйвера: драйвер базы данных и дравер генератора документации, но пока что, они не особо отвечают свойствам драйверов.

Да, единственный драйвер, который хоть как-то сейчас соответствует своему названию - драйвер базы и всё что у него есть для взаимодействия с дугими модулями - get_connection, но это только начало.

Светлое будущее

По мере разработки планирую добавлять больше возможностей для взаимодействия компонентов между собой, в планах сделать:

  • Баффнуть драйвер базы: добавить методы взаимодействия с базой, после чего любая сторонняя библиотека добавленная в наш проект сможет взаимодействовать с базой, даже не зная, с чем она вообще взаимодействует: с реальной базой или с проффесиональной базой поднятой в exel и получать корректные данные для своей работы.

  • Переработать авторизацию, после чего она тоже переедет в драйвер, благодоря чему можно будет получать информацию об авторизации, авторизовывать и регестрировать пользователя через драйвер.

Ну и пара фич, о реализации которых я ещё только думаю:

  • Возможность выбора модуля вьюх и драйвер на них

  • Возможность выбора модуля сериализатора и драйвер на них

Как итог

В перспективе, можно будет иметь много разных библиотек от разных авторов, которые даже не знают о существовании друг друга, но могут спокойно друг с другом взаимодействовать.

Да и в целом драйверная архитектура даёт возможность проекту быть модульным, что в свою очередь позволяет подстраиваться под любые задачи и использовать jija под любые проекты.

Полезные ссылки

  • Проект

  • Документация

  • Документация по созданию драйверов

Источник: https://habr.com/ru/articles/731040/


Интересные статьи

Интересные статьи

Цифровой мир находится в состоянии постоянного движения, и одной из его мощных движущих сил является генерируемый контент. Сегодня люди охотнее поверят мнению, высказанному другими людьми онлайн, че...
Во времена dial-up под интернет-шумом был тот самый ламповый звук модема, подключающегося к серверу провайдера по телефонной линии. Достаточно было поднять трубку, чтобы услышать, как устройства «обща...
Одна из основных задач системного аналитика это формализация и описание тех или иных понятий. И вот уже проработав системным аналитиком в течении 5-ти лет и встречаясь со словом система десятки раз за...
ABBYY представила Vantage – low-code/no-code платформу нового поколения для интеллектуальной обработки документов с набором готовых обученных когнитивных сервисов (навыков или скиллов) для распознаван...
Рады объявить, что компания «Флант» пополняет свой вклад в Open Source-инструменты для Kubernetes, выпустив альфа-версию драйвера CSI (Container Storage Interface) для Яндекс.Облака. Но пе...