DROP TABLE IF EXISTS `object_fields`;

CREATE TABLE IF NOT EXISTS `object_fields` (
    `id` INT(11) NOT NULL COMMENT 'PK',
    `name` varchar(64) NOT NULL COMMENT 'Название произвольного поля',
    `title` varchar(64) NOT NULL COMMENT 'Заголовок произвольного поля (для XML)',
    `type` TINYINT(4) DEFAULT NULL COMMENT 'Тип поля: 0 - text, 1 - number, 2 - select, 3 - multi select, 4 - checkbox, 5 - textarea',
    `params` TEXT NULL COMMENT 'Параметры произвольного поля',
    `order` tinyint(4) NOT NULL COMMENT 'Порядок сортировки',
    `agency_id` mediumint(9) NOT NULL COMMENT 'ИД агентства, которому принадлежит поле',
    `is_available` TINYINT(4) DEFAULT 0 COMMENT 'Флаг, поле доступно для отображения в карточке',
    `is_active` TINYINT(4) DEFAULT 0 COMMENT 'Флаг, поле доступно для выгрузки в XML',
    `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата/время создания (добавления) поля',
    `created_by` mediumint(9) NOT NULL COMMENT 'Пользователь, который добавил произвольное поле',
    `updated_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата/время обновления (редактирования) поля',
    `updated_by` mediumint(9) NOT NULL COMMENT 'Пользователь, который изменил произвольное поле'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='Таблица произвольных полей объектов';

ALTER TABLE `object_fields`
    ADD PRIMARY KEY (`id`),
    ADD KEY `name` (`name`),
    ADD KEY `title` (`title`),
    ADD KEY `type` (`type`),
    ADD KEY `params` (`params`(255)),
    ADD KEY `order` (`order`),
    ADD KEY `agency_id` (`agency_id`),
    ADD KEY `active` (`is_available`, `is_active`),
    ADD KEY `created` (`created_at`, `created_by`),
    ADD KEY `updated` (`updated_at`, `updated_by`);

ALTER TABLE `object_fields`
    MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
