Search for a command to run...
В этом руководстве вы узнаете о провайдере Модуля интеграций: что это такое, что нужно для его реализации, как модуль регистрирует его при старте приложения, и модель данных , которая представляет каждый зарегистрированный инстанс в базе данных.
Провайдер Модуля интеграций объявляет интеграцию: её параметры, их группировку в секции настроек и необязательную проверку соединения. Администратор магазина настраивает её в Admin, без правок и без повторного развёртывания.
Модуль интеграций не зависит от типа провайдера, поэтому, в отличие от встроенных коммерческих модулей Medusa, он не поставляется с провайдером по умолчанию или провайдером-заглушкой. Провайдером Модуля интеграций может быть любой плагин, провайдер или собственный модуль. Полный список сценариев смотрите в разделе Где можно применять Модуль интеграций.
Каждый провайдер, зарегистрированный в параметре Модуля интеграций, представлен в базе данных моделью данных .
Провайдер Модуля интеграций представляет собой модуль, чей сервис расширяет , импортированный из . Как и у других провайдеров Medusa, один модуль может регистрировать несколько сервисов провайдера Модуля интеграций, каждый со своим , и каждый становится отдельным провайдером.
объявляет следующие члены класса:
| Член класса | Описание |
|---|---|
| Обязательное поле. Стабильный идентификатор провайдера, общий для всех его инстансов. | |
| Обязательное абстрактное свойство. Возвращает дескриптор, созданный через : параметры, секции, валидацию и необязательную проверку соединения. | |
| Необязательный метод. Fail-fast проверка конфигурации провайдера из при загрузке приложения. По умолчанию ничего не делает. | |
| Реализован в базовом классе. Возвращает конструктора. | |
| Реализован в базовом классе. Возвращает регистрации этого инстанса или для инстанса по умолчанию. |
Вот минимальная форма провайдера со всеми членами класса из таблицы выше, кроме тех, что уже реализует базовый класс:
providers/integration-my/services/my-integration.ts1import { AbstractIntegrationProvider } from "@gorgo/medusa-integration"23class MyIntegrationProvider extends AbstractIntegrationProvider {4 static identifier = "my"56 static validateOptions(options: Record<string, unknown>) {7 // необязательная fail-fast проверка8 }910 get descriptor() {11 return descriptor12 }13}1415export default MyIntegrationProvider
здесь представляет собой результат , подробнее об этом в разделе Основные концепции. и в примере не показаны: уже реализует оба метода через аргумент конструктора, поэтому подкласс добавляет только , и, опционально, .
Полный пошаговый пример с кодом смотрите в разделе Как создать провайдер Модуля интеграций.
Модуль интеграций принимает параметр , в котором вы настраиваете провайдеры, зарегистрированные в вашем приложении, а также параметр , используемый для секретных полей модуля. Точную структуру смотрите в шаге 4 руководства «Как создать провайдер Модуля интеграций».
При старте приложения Medusa Модуль интеграций регистрирует каждый провайдер из параметра . Для каждой записи он объединяет класса провайдера с записи в ключ . Это тот же формат, что используется для этого инстанса в базе данных. Затем он создаёт провайдер через .
Инстанс зарегистрированного провайдера Модуля интеграций представлен в приложении Medusa моделью данных .
Собственный модели служит лишь её внутренним идентификатором записи, таким же, как у любой другой модели данных Medusa. Это не то же самое, что , поле, которое хранит ключ из раздела Инстансы и их идентификаторы.
| Поле | Описание |
|---|---|
| Ключ инстанса, . Уникальный. По этому полю CRUD API, резолвер и Admin находят нужную запись. | |
| Категория интеграции, например или , задаётся из поля дескриптора. | |
| Отображаемое название интеграции или , если дескриптор его не задаёт. | |
| Несекретные настройки интеграции, сохранённые администратором магазина. | |
| По умолчанию . Переключается из Admin, см. Включение и отключение интеграции. | |
| Результат последней проверки соединения: , или , либо , если проверка ещё не запускалась. |
Вы можете удалить зарегистрированный провайдер Модуля интеграций, удалив его запись из параметра в . В отличие от отключения интеграции из Admin, это не затрагивает сохранённую запись. Провайдер просто перестаёт регистрироваться, поэтому модуль больше не может найти его запись по . Интеграция исчезает из списка в Admin, а её сохранённые данные становятся недоступны через собственные admin-роуты Модуля интеграций.
Удалите интеграцию из Admin, прежде чем убирать провайдер из , а не наоборот. Как только провайдер исчезает из конфигурации, его запись становится недостижима, в том числе через сам роут удаления, и остаётся в базе данных без возможности удалить её из Admin. Обычный порядок удаления описан в разделе Удаление интеграции.
Чтобы временно прекратить использование провайдера, сохранив его настройки и возможность быстро вернуть его обратно, отключите интеграцию из Admin вместо удаления провайдера из . См. Включение и отключение интеграции.