Менеджмент СУБД через 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- создание нового аккаунта WebimACCOUNT_NAMEи инициализация его хранилища. Связанные с аккаунтом записи будут добавлены в схемуmeta, связанные с оператором - в схемуpro. До выполнения команды аккаунта WebimACCOUNT_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!- указанный аккаунт уже существует.