Skip to main content

Управление процессами импорта (мониторинг статусов, остановка, удаление)

Пользовательские сценарии

Стартовое состояние – пользователь находится в окне редактирования источника в диспетчере данных

Действие: Пользователь нажимает на кнопку "Удалить подключение"

Результат:

  • Появляется модальное окно для подтверждения удаления источника
  • После подтверждения источник удаляется

 

Стартовое состояние – пользователь находится в скрипте загрузки в диспетчере данных

Действия:

  • Пользователь удаляет лишнюю часть скрипта
  • Пользователь сохраняет и запускает скрипт

Результат: Из проектной БД удаляется указанная часть данных из источника

 

Действия:

  • Пользователь открывает контекстное меню источника (нажатием на "три точки")
  • Пользователь нажимает на "Удалить данные из проекта"

Результат:

  • Появляется модальное окно для подтверждения удаления данных из источника
  • После подтверждения все данные из источника удаляются из проектной БД

 

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

 

1. Мониторинг статусов

Клиентская часть оценивает состояние коннектора (в том числе загрузки) с помощью запроса, а также по сокет соединению, которое инициируется в момент навигации на страницу проекта:
GET https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/sources/list/{projectId},  где projectId – id проекта, для которого запрашиваются источники.

Результат содержит массив из объектов описывающих каждый коннектор, подключенный к выбранному проекту (подробное описание см. раздел "Получение списка и состояний подключений").
В объекте находится вся полезная информация для обновления пользовательского интерфейса и отслеживания статуса загрузки коннектор

{
    "id": "a9db47c9-a1f9-4637-895f-b2f175a2c80a",
    "isValid": true,
    "createdAt": "2023-11-22T13:02:12.594Z",
    "updatedAt": "2023-11-22T13:02:12.594Z",
    "name": "QVDNEW",
    "driver": "qvd",
    "type": "file",
    "filePath": "/qvd/df0b5654-d967-40d0-bcfc-ce39055001c0.qvd",
    "fileName": "df0b5654-d967-40d0-bcfc-ce39055001c0.qvd",
    "selected": false,
    "lastLoading": {
        "id": "2116fef9-07b6-4f4a-8af6-60e90fc11351",
        "projectId": null,
        "sourceId": "a9db47c9-a1f9-4637-895f-b2f175a2c80a",
        "status": "success",
        "started": "2023-11-22T13:02:12.613Z",
        "loaded": 10103,
        "progress": 100
    }
}


В частности поле lastLoading - описывает последнюю попытку использования коннектора для импорта данных в проект.
С помощью его содержимого выполняется мониторинг статусов импорта данных в проект, касающийся данного коннектора.
Например:

  • progress - процент выполнения загрузки источника в проект
  • loaded - определяет количество записей (строк) успешно импортированных в проект
  • status - статус последнего процесса импорта из источника

Информация о статусе импорта данных из источника также динамически поступает через сокет соединение, которое ожидает сообщений от канала брокера (rabbitMQ). Микросервис загрузки файловых источников отслеживает статус импорта данных из источника и через брокер (rabbitMQ) и затем сокет соединение оповещает клиентов об изменении в статусае импорта


2. Остановка импорта, удаление источника из проекта

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

Второй вариант для отмены результатов импорта – удаление данных из проекта через контекстное меню подключенного источника (делает то же самое, что и "стирание" вручную")

Удаление источника из проекта инициируется на клиентской части:

image.png

Post запрос, https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/sources/delete

Тело запроса:

{
    "id": "863f0581-5344-4bee-a264-92d03ea8bef3"
}

где, id - идентификатор источника, который необходимо удалить

Результат:
Если нет доступа к источнику (роль не администратор или не владелец источника) возвращается ошибка 403 "У вас нет прав управлять данным источником"

Если источник не найден, возвращается ошибка 404 'Источник не найден'

В случае успешного удаления источника возвращается статус 200 с сообщением "Ok"

image.png

На стороне Nest.js происходит удаление базы данных clickhouse, ассоциированной с указанным в запросе источником, а также обновляется метка источника "deletedAt" в базе данных postgres, которая отражает успешный результат удаления