Skip to main content

Импорт данных из коннектора

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

1. При нажатии на коннектор из спистка в левочй панелик клиентская часть отправляет на сервис Nest.js GET запрос на получение соответствующих таблиц коннектора

https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v2/source/{sourceId}/tables, где sourceId - id выбранного коннектора

Список доступных таблиц происходит путём запроса метаданных источника из бд postgres

Результат отображается в левой панели "Таблицы источника"

image.png

2. При выборе таблицы из списка "Таблицы источника" отправляются GET запросы Meta + Preview:

Meta - содержит метаданные по выбранной таблице (тип драйвера, количество записей, название таблицы, id таблицы)

{
    "kind": "sourceTableMeta",
    "sourceTableMeta": {
        "sourceId": "3ad0c9f4-5a92-4aa8-8776-1e5b3f0098e3",
        "tableName": "Tablitsa",
        "rowCount": 99,
        "driverType": "xlsx"
    }
}

https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v2/source/{sourceId}/table/Tablitsa/meta

Preview - содежит фактические данные для отображения превью клиенту, всю информацию по колонкам таблицы и некоторое количество записей

https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v2/source/{sourceId}/table/Tablitsa/preview

Данные получают путём запроса метаданных коннектора из бд postgres, поиска источника по этим метаданным на стороне сервера и дальнейшего форматирования результата запроса для отправки ответа клиентской части

3. Драйверы. Тип драйверов:

  • clickhouse
  • csv
  • hive
  • json
  • ms
  • my
  • oracle
  • postgres
  • qvd
  • rest-api
  • txt
  • xlsx
  • xml

Каждый тип драйвера наследуется от класса DriverDatabase и реализует интерфейс IDriver

Это гарантирует, что драйвер реализует необходимые методы, такие как:

  • getCredentialsInstance - получение данных для подключения к драйверу (если требуются)
  • getRowCount - получение общего числа записей в источник
  • getDbMeta - получение метаинформации по бд (список таблиц в источнике, с краткой информацией по каждой)
  • getPreview2 - получение превью бд (ограниченное количество строк + список столбцов)
  • query - выполнение любого запроса относящегося к источнику
    и др.
4. Смена названий и типов столбцов таблицы данных инициируется на клиентской части приложения, без создания дополнительных запросов к сервису Nest.js (см. скриншот ниже). Изменения будут учтены после продолжения импорта данных и нажатия на кнопку "далее". 

image.png

Изменённое поле будет отражено в скрипте загрузки в разделе @@Create создания базы данных clickhouse

image.png

5. Создание скрипта загрузки 

Нажатие на кнопку далее инициирует процесс формирования скрипта загрузка на основе обновленной информации

image.png

Процесс состоит из двух последовательных запросов:
а) Обновлённая структура таблицы загружается на сервис Nest.js с помощью POST запроса:
https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/script/{projectId}/table, где projectId - id проекта

image.png

Ответ (подтверждение успешного выполнения операции - "Ok"):

image.png

б) Для отображения скрипта загрузки на клиентской части выполняется GET запрос:
https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/script/{projectId}, где projectId - id проекта

Ответ:
список страниц с кодом скрипта загрузки для обновления ui клиентской части

image.png