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

Нажатие на кнопку далее инициирует создание запроса на генерацию/обновление скрипта загрузки проекта, с учетом выборки данных из источников, осуществлённых в прошлых пунктах.

image.png

За этот процесс отвечает запрос:
https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/script/{projectId}