Перейти к содержанию

Менеджмент СУБД через wmdb

wmdb - компонент Webim Server, предназначением которого является менеджмент БД/схем (здесь и далее будет использовано только понятие БД, подразумевая под собой и альтернативу в виде схем в случае использования PostgreSQL в качестве табличной СУБД). Также wmdb позволяет выполнять операции взаимодействия с БД без запуска основного кода. Это даёт пространство для манёвров, а также позволяет реализовать некоторые use-кейсы, например, инициализация БД на hosted-размещениях

В wmdb имеется CLI-интерфейс, позволяющий производить простейшие действия с СУБД. Доступ к CLI осуществляется из виртуального окружения через запуск Python-модуля (python3 -m wmdb). Запуск из-под sudo не требуется.

Ниже дан синтаксис wmdb:

wmdb [object [ACCOUNT_NAME] command [args]] [--help]
wmdb --version

В wmdb существует 4 объекта взаимодействия:

  • Схема meta в реляционной СУБД - meta
  • Схема pro в реляционной СУБД - pro
  • Схема stats в колоночной СУБД - stats
  • Аккаунт Webim (таблица account в схеме pro) - account

В wmdb существует два специальных флага:

  • --version - возвращает номер версии wmdb.

  • --help - возвращает подсказки по командам. Применимо ко всем командам.

N.B.

Для выполнения команд в конфигурации СУБД Webim Server должны быть указаны учётные записи СУБД, обладающие всеми привилегиями.

Команды CLI

wmdb meta

Данный набор команд отвечает за работу со схемой webim_meta.

Доступные команды:

  • wmdb meta create - создание схемы meta с необходимыми данными. До выполнения команды схемы meta существовать не должно.

  • wmdb meta exists - проверка существования схемы meta. Выполнение команды завершается со статус-кодом 0, если схема meta уже существует, в противном случае выполнение завершается со статус-кодом 1.

Возможные ошибки:

  • wmdb meta create: Meta schema already exists! - схема meta уже существует.

wmdb pro

Данный набор команд отвечает за работу со схемой pro.

Доступные команды:

  • wmdb pro ACCOUNT_NAME create - создание схемы pro для аккаунта ACCOUNT_NAME с необходимыми данными. Настройки соединения и конфигурация схемы должны быть заданы в db.json. До выполнения команды схемы pro для аккаунта существовать не должно.

  • wmdb pro ACCOUNT_NAME exists - проверка существования схемы pro для аккаунта ACCOUNT_NAME. Выполнение команды завершается со статус-кодом 0, если схема pro для указанного аккаунта уже существует, в противном случае выполнение завершается со статус-кодом 1.

  • wmdb pro ACCOUNT_NAME current - отображение текущей версии схемы pro аккаунта ACCOUNT_NAME.

  • wmdb pro ACCOUNT_NAME upgrade REVISION - обновление схемы pro аккаунта ACCOUNT_NAME до версии REVISION. По умолчанию значением REVISION является head, т.е. при запуске команды будет произведено обновление схемы до последней версии.

  • wmdb pro ACCOUNT_NAME downgrade REVISION - даунгрейд схемы pro аккаунта ACCOUNT_NAME до версии REVISION.

Возможные ошибки:

  • wmdb pro ACCOUNT_NAME create: Pro schema already exists! - схема pro для аккаунта ACCOUNT_NAME уже существует.

N.B.

При выполнении миграции к низшей версии схемы pro мы рекомендуем Вам сначала произвести миграцию к низшей версии схемы stats.

wmdb stats

Данный набор команд отвечает за работу с аналитической СУБД.

Доступные команды:

  • wmdb stats ACCOUNT_NAME current - отображение текущей версии аналитической схемы аккаунта ACCOUNT_NAME.

  • wmdb stats ACCOUNT_NAME upgrade REVISION - обновление аналитической схемы аккаунта ACCOUNT_NAME до версии REVISION. По умолчанию значением REVISION является head, т.е. при запуске команды будет произведено обновление схемы до последней версии.

  • wmdb stats ACCOUNT_NAME downgrade REVISION - даунгрейд аналитической схемы аккаунта ACCOUNT_NAME до версии REVISION.

Возможные ошибки:

  • stats ACCOUNT_NAME [upgrade | downgrade] REVISION: Failed to load categories - Произошла ошибка при загрузке категорий.

N.B.

При выполнении миграции к высшей версии схемы stats мы рекомендуем Вам сначала произвести миграцию к высшей версии схемы pro.

wmdb account

Данный набор команд отвечает за работу с аккаунтами Webim.

Доступные команды:

  • wmdb account ACCOUNT_NAME create - создание нового аккаунта Webim ACCOUNT_NAME и инициализация его хранилища. Связанные с аккаунтом записи будут добавлены в схему meta, связанные с оператором - в схему pro. До выполнения команды аккаунта Webim ACCOUNT_NAME существовать не должно.

  • wmdb account ACCOUNT_NAME exists - проверка существования аккаунта ACCOUNT_NAME. Выполнение команды завершается со статус-кодом 0, если аккаунт с указанным именем существует, в противном случае выполнение завершается со статус-кодом 1.

Для wmdb account ACCOUNT_NAME create существует следующий список принимаемых аргументов:

Параметр Пример Описание Обязательный параметр
--agent-email somemail@mail.com Адрес электронной почты оператора. Да
--agent-name Agent Имя оператора. Да
--agent-password-hash a6c79a27049109e472b246b5dfbe08aedff1e9e2259597e54032dbad4958d4ad Хэш пароля аккаунта оператора. Да
--partner-name webim Имя партнёра. По умолчанию webim. Нет. В случае отсутствия параметра используется значение по умолчанию.
--phone 79001234567 Номер телефона организации. Да
--site somesite.com Сайт организации. Да
--timezone Europe/Moscow Часовой пояс аккаунта. Да
--language ru Ключ языка аккаунта Да
--trial-period-days 7 Длительность демо-периода аккаунта в днях. Значение не менее 1, по умолчанию 7. Нет

Пример создания аккаунта testcom с использованием wmdb:

python3 -m wmdb account testcom create --agent_email=somemail@mail.com --agent-name=Agent \
        --agent-password-hash=a6c79a27049109e472b246b5dfbe08aedff1e9e2259597e54032dbad4958d4ad \
        --partner-name=webim --phone=79001234567 --site=somesite.com --timezone=Europe/Moscow \
        --language=ru --trial-period-days=7

Возможные ошибки:

  • wmdb ACCOUNT_NAME create: Account already exists! - указанный аккаунт уже существует.