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, которая с помощью брокера отправляет в микросервис, отвечающий за скрипт загрузки, команду запускающую соответствующий проекту скрипт