Сценарії
Підключення баз даних
MySQL, PostgreSQL, MongoDB: конектори проєкту, тест з'єднання, безпека, блоки flow.
Навіщо це
Блоки MySQL, PostgreSQL і MongoDB у flow працюють із вашими зовнішніми базами — CRM, склад, аналітика, legacy-система. Це не внутрішня БД платформи Epsenta (контакти бота зберігаються окремо).
Один проєкт може мати кілька іменованих конекторів (alias): наприклад «CRM prod» і «Analytics read-only».
Де налаштувати
Панель → Налаштування → вкладка Бази даних. Потрібне право на налаштування проєкту (роль адміністратора або кастомна з settings).
Для кожного движка — окрема секція: MySQL (port 3306), PostgreSQL (5432), MongoDB (27017 або URI).
Створення конектора
- Натисніть «Додати підключення», оберіть движок
- Alias — зрозуміла назва для вибору в блоці flow
- Host, port, database, username, password
- SSL — для хмарних БД (Atlas, Neon, RDS)
- readOnly — якщо бот лише читає дані
- maxRows (500) та queryTimeoutMs (15 с) — захист від важких запитів
- PostgreSQL: schema (public); MongoDB: authSource, connection URI
- Зберегти → **Тест з'єднання**
Мережа та доступ
Запити виконує сервер Epsenta (production: Hetzner VPS). Ваш firewall / security group має дозволити вхід з IP платформи або використовуйте публічний endpoint хмарного провайдера з SSL.
Паролі зберігаються зашифровано; у логах платформи connection string з паролем не з'являється.
Використання в flow
У редакторі flow — палітра Бази даних: перетягніть MySQL / PostgreSQL / MongoDB. Оберіть конектор і дію (SELECT, INSERT, find, aggregate…).
Параметри запиту — JSON-масив або поля з підстановкою {змінних} контакту. Результат — у змінну (JSON-масив), також _count і _first.
Два виходи: Успіх (навіть 0 рядків) і Помилка (таймаут, SQL-помилка, readOnly). Деталі по блоках: /wiki/blok-mysql-query, /wiki/blok-postgres-query, /wiki/blok-mongodb-query.
Безпека
- Лише параметризовані запити — не вставляйте текст користувача напряму в SQL
- readOnly для аналітики та перевірки статусів
- UPDATE/DELETE вимагають WHERE — захист від повного wipe
- DDL (CREATE/DROP) за замовчуванням заблоковано
- Окремий DB-користувач з мінімальними правами для бота