Регулярное обновление данных в проекте
Техническое описание
График обновления данных проекта устанавливается пользователем при нажатии на соответствующую кнопку на странице скрипта загрузки и подтверждении графика
При подтверждении (кнопка изменить), на Nest.js сервис отправляется POST запрос, содержащий информацию по графику обновления данных и флаг (поле isActive), контролирующий активно ли обновление или нет.
Идентификатор задачи на обновление равен идентификатору проекта и добавляется как параметр в запросе
https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/cronjob/{cronId}, где cronId – идентификатор задачи (соответствует id проекта)
{
"isActive": false,
"cron": {
"type": "hour",
"minutes": 0,
"hours": 0
}
}
Если по каким-либо причина проекта не существует, будет возвращена ошибка 604 (проект не найден)
Последовательность выполнения запроса
- инициация POST запроса от пользователя, с указанием периода обновления
- регистрация (прием) запроса в контроллере Nest.js (проверка лицензии, роли). Если роль не админ, разработчик или нет лицензии пользователю возвращается ошибка
- проверка существования проекта по id из запроса. Если проекта нет, возвращается ошибка
- отправка внутреннего запроса (в пределах сервера) от микросервиса обрабатывающего пользовательские запросы микросервису планировки задач (cron), через брокер (rabbitMQ). микросервис принимающий запросы клиентов à брокер (rabbitMq) à микросервис планировки задач
- в микросервисе планировки (cron) создается задача и её метаданные сохраняются в базу данных postgress.
Если задача активна, она будет запускаться в соответствии с указанным временным периодом.
Обновление проекта – это функция cron, которая с помощью брокера отправляет в микросервис, отвечающий за скрипт загрузки, команду запускающую соответствующий проекту скрипт