Skip to main content

Регулярное обновление данных в проекте

Техническое описание

ОГрафик обновлениея данных проекта укстазынавливается пользователем при нажатии на соответствующую кнопку на странице скрипта загрузки и подтверждении графика

image.png


При подтверждении (кнопка изменить), на Nest.js сервис отправляется POST запрос, содержащий информацию по графику обновления данных и флаг (поле isActive), контролирующий активно ли обновление или нет.

Идентификатор задачи на обновление равен идентификатору проекта и добавляется как параметр в запросе

https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/cronjob/{cronId}, где cronId – идентификатор задачи (соответствует id проекта)

image.png

{
    "isActive": false,
    "cron": {
        "type": "hour",
        "minutes": 0,
        "hours": 0
    }
}

Если по каким-либо причина проекта не существует, будет возвращена ошибка 604 (проект не найден)

Последовательность выполнения запроса
  • инициация POST запроса от пользователя, с указанием периода обновления
  • регистрация (прием) запроса в контроллере Nest.js (проверка лицензии, роли). Если роль не админ, разработчик или нет лицензии пользователю возвращается ошибка
  • проверка существования проекта по id из запроса. Если проекта нет, возвращается ошибка
  • отправка внутреннего запроса (в пределах сервера) от микросервиса обрабатывающего пользовательские запросы микросервису планировки задач (cron), через брокер (rabbitMQ). микросервис принимающий запросы клиентов à  брокер (rabbitMq) à микросервис планировки задач
  • в микросервисе планировки (cron) создается задача и её метаданные сохраняются в базу данных postgress.

Если задача активна, она будет запускаться в соответствии с указанным временным периодом.

Обновление проекта – это функция cron, которая с помощью брокера отправляет в микросервис, отвечающий за скрипт загрузки, команду запускающую соответствующий проекту скрипт