Какая архитектура и структура должна быть у такого приложения?
Доброго времени суток!
Будет много текста и идей.. Было бы здорово, если бы подсказали, как лучше всего сделать.
1. Модуль, который получает значения из внешнего АПИ. На основание этих значений будут приниматься дальнейшие действия.
2. Модуль, который отвечает за оповещение. Для примера возьмем бота телеграмма. Он будет ближе всего для понимания.
Как я себе это представляю:
0.1 авторизация клиента(модуль 2)
0.2 авторизация апи(модуль 1 изи описанного выше)
1.0 приходит инфа через 1 модуль
1.1 запись в базу
1.2 определяем подходят данные под условие или нет
2. Если данные из 1.2 подходят под какие-то определенные условия вызываем нужный скрипт(myscript1, для примера)
3.1. Внутри скрипта myscript1 описаны некоторые взаимодействия с данными
3.2. Вызов методов из 0.2 для оповещения
Проблема заключается в том, как разделить функционал по файлам и чтобы все работало.
Были идеи:
а) То что описал выше, но столкнулся с проблемами, которые опишу ниже.
б) Все в одном файле сделать с дальнейшей переработкой. Сразу же отверг
в) Сделать независимые скрипты. Грубо говоря, один слушает апи и пишет в базу. Второй скрипт читает базу на предмет новых записей и обрабатывает данные с последующей записью в базу для скрипта три. Третий скрипт читает базу и занимается оповещением.
В пункте "а" возникли проблемы с тем, что на конечном этапе не всегда удавалось пробросить авторизованный клиент телеграмма для оповещения.
Допустим в main.js происходит авторизация всего через промисы все это происходит последовательно. Но тогда приходится передавать клиент из 0.1(telAPI.js) в 0.2(devAPI), а затем и в 3.2. До этого была попытка экспорта отправки сообщений из 0.1 в 3.2 напрямую, но не всегда 0.1 успевал до 1.2 клиент подключиться подключиться до экспорта в 3.2 и событий в 0.2..
Получалось так, что внутри 3.1(myscript1) скрипт пытается вызвать метод из 0.1, но он еще undefinded
Выложи структуру проекта. А то ничего не понятно.
Проектная документация - самый хороший вариант, который помогает "разложить всё по полочкам".
Т.е. в ней отображается ход мыслей, а в схемах она визуализируется.
Попробуй на бумаге "раскидать" связь модулей, затем раздели функциональность по сущностям (или по другим критериям).