Иногда при написании плагинов нужно сохранять дополнительные параметры для встроенных объектов. COREmanager (Class mgr_db::Cache) позволяет добавлять дополнительные поля в таблицы базы данных (БД) без внесения изменений в код приложения. Добавленные поля обрабатываются стандартными алгоритмами. Система автоматически отслеживает наличие поля в таблице и его тип. При необходимости поле будет добавлено или изменён его тип. Значения таких полей можно изменить через форму редактирования или вывести в списке записей. Для этого достаточно добавить соответствующее поле в метаданные.
Добавление поля
Чтобы добавить дополнительное поле в таблицу, создайте каталог /usr/local/mgr5/etc/sql/{имя_продукта}.{имя_таблицы}.addon или /usr/local/mgr5/etc/sql/{имя_таблицы}.addon. Каждый файл этих каталогов описывает отдельное поле таблицы. Имя поля совпадает с именем файла. По умолчанию будет создано поле типа string с максимально возможной длиной (VARCHAR(255)). Вы можете:
- задать другой тип данных;
- определить значение по умолчанию;
- определить параметры доступа, соответствующие структуре
Struct mgr_db::TableDesc::Field.
type=string
size=40
access_read=registered
access_write=admin+
default=0.0.0.0type — определяет тип поля. Значения соответствуют именам классов-наследников Class mgr_db::Field. Например, string создаёт поле типа class mgr_db::StringField, а int — class mgr_db::IntField. Возможные значения:
string— строка. Параметрsizeзадаёт максимальную длину ячейки. По умолчанию: 255;int— целочисленное поле;bool— булево значение:onилиoff;decimal— поле для хранения чисел с фиксированной запятой;date— поле для хранения даты;money— поле для хранения валютных значений с автоматическим форматированием;text— текстовое поле;idn— поле для хранения интернационализированного доменного имени (IDN);long— целочисленное поле увеличенной длины;datetime— поле для хранения времени с датой.
size — размер поля для class mgr_db::StringField. По умолчанию: 255.
access_read — ограничивает доступ на чтение значения поля по уровням доступа пользователей (см. пространство имён mgr access). По умолчанию поле доступно для всех пользователей.
access_write — ограничивает доступ на запись. Аналогично access_read.
access — задаёт права на чтение и запись одновременно. Переопределяет значения access_read и access_write.
default — устанавливает значение по умолчанию. Чтобы установить значение NULL, укажите параметр:
default nullПрименение изменений
После создания или редактирования файлов очистите кеш и перезапустите панель:
rm -rf /usr/local/mgr5/var/.db.cache*
killall core
Диагностика
Чтобы убедиться, что изменения применены, подключитесь к СУБД и убедитесь, что поле добавлено:
mysql mgrName -e "DESC <MYTABLE>"