v2.47.0
Metabot продолжает развиваться и открывать для вас больше возможностей в разработке чат-ботов. Сегодня мы хотим представить вам новый функционал, расширяющий кастомные таблицы — связи между таблицами.
Сами по себе кастомные таблицы играют важную роль в создании чат-ботов и диалоговых приложений. Они помогают в разработке бизнес-логики, интеграциях с внешними сервисами, сборе аналитики, работе с нейросетями и в целом являются удобным и практичным хранилищем данных, альтернативным таким продуктам как Google Sheets, AirTable и Notion
Данный долгожданный релиз, ожидаемый многими из вас, делает кастомные таблицы полноценной базой данных, благодаря связям между таблицами.
Разработчики, знакомые с SQL языком и понимающие, что такое LEFT JOIN запросы, по достоинству оценят данное нововведение.
Теперь на Metabot платформе вы сможете создавать полноценные реляционные базы данных для ваших продуктов и решений.
В качестве примера приведем несколько таблиц и покажем их связи:
Table: roles (Справочник ролей)
Поле | Описание | Тип |
id | ID | AUTOINCREMENT |
code | Код | TEXT |
name | Название | TEXT |
Table: user_roles (Роли пользователей)
Поле | Описание | Тип | Связь |
id | ID | AUTOINCREMENT | |
user_id | ID пол | BIG_INT | |
user | Пользователь | RELATION | users |
role_id | ID роли | BIG_INT | |
role | Роль | RELATION | roles |
Table: users (Пользователи)
Поле | Описание | Тип | Связь |
id | ID | AUTOINCREMENT | |
Почта | TEXT | ||
phone | Телефон | TEXT | |
first_name | Имя | TEXT | |
last_name | Фамилия | TEXT | |
patronymic | Отчество | TEXT | |
status_id | ID статуса | BIG_INT | |
status | Статус | RELATION | user_statuses |
created_at | Дата добавления | CREATED_AT | |
updated_at | Дата обновления | UPDATED_AT |
Table: user_statuses (Статусы пользователей)
Поле | Описание | Тип |
id | ID | AUTOINCREMENT |
code | Код статуса | TEXT |
name | Название | TEXT |
is_active | Флаг активности | TINY_INT |
is_cancelled | Флаг отмены | TINY_INT |
В этом примере вы можете увидеть, что есть справочник доступных ролей, например, там могут быть абитуриент, студент, преподаватель, куратор.
Далее мы видим, что приложения подразумевает мульти-роль у пользователя, например, пользователь может быть одновременно преподавателем и куратором.
Далее, мы видим, что у пользователя есть статус и есть таблица доступных статусов, например, в ней может быть ожидает модерации, активный, бан.
Что дают связи между таблицами?
- Во-первых, теперь вы сможете строить более гибкие бизнес-логики, связывая таблицы по уникальным идентификаторам и связывая данные между собой.
- Связи помогают в построении сложных сценариев диалогов с ботами, где данные из нескольких таблиц автоматически подтягиваются в зависимости от контекста.
- Интеграция с внешними сервисами, которые требуют связных данных для точной обработки запросов.
Кстати, вам не обязательно создавать чат-бота на платформе Metabot. Вы можете использовать Metabot только в качестве бэкэнда: базу данных, API и логику обработки.
Metabot отлично работает в сочетании с другими бот-платформами и Low Code, No Code и AI инструментами.
Теперь детальнее разберем как настраивать и как работают нововведения.
1. Создание связей
Связи между таблицами реализуются с помощью специальных полей таблиц. Сначала создается стандартное поле бд, например lead_id с типом BIG INT. Чтобы связать это поле с другой таблицей нужно создать отдельное поле с типом RELATION. Сделать это можно при помощи кнопки + напротив поля lead_id или кнопки Создать.
Обе кнопки открывают окно создания, в котором необходимо указать тип RELATION. После выбора типа, в появившихся полях можно указать связываемую таблицу, поля по которым связываются таблицы и другие настройки. Одна таблица может быть связана сразу с несколькими другими таблицами, в том числе с системными (например таблица лидов, персон, ботов, скриптов бота и т.д.).
После создания связанное поле будет содержать ссылку на соответствующую запись в другой таблице.
2. Применение
С созданием разобрались, но чем может быть полезен такой функционал? Все просто, при редактировании или удалении записей связанные таблицы могут повторять изменения друг друга.
Так при обновлении или удалении связанного поля в одной таблице, оно изменится и в других таблицах автоматически. Так же при создании или редактировании записей можно выбрать значение из связанной таблицы с помощью выпадающего списка.
Изменения претерпел и основной JS метод кастомных таблиц. Через table.find теперь так же можно искать связанные поля. Для этого к названию связанного поля из другой таблицы нужно добавить алиас указанный в поле таблицы к которой происходит обращение через метод.
const items = table.find('products', ['orders.id'])
v2.47.0 — 2025-05-20
Описание версии
Добавлено
- Кастомные таблицы: связи между таблицами.
Техническое описание релиза:
https://docs.metabot24.ru/books/08-changelog/page/v2470-2025-05-20