Files
2026-07-27 12:58:44 +03:00

38 lines
1.6 KiB
SQL

CREATE TABLE IF NOT EXISTS `{{prefix}}_request_condition_groups` (
`Id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`request_id` SMALLINT UNSIGNED NOT NULL,
`parent_id` INT UNSIGNED NOT NULL DEFAULT 0,
`group_title` VARCHAR(100) NOT NULL DEFAULT '',
`group_operator` ENUM('AND','OR') NOT NULL DEFAULT 'AND',
`group_position` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`Id`),
KEY `idx_request_parent` (`request_id`, `parent_id`, `group_position`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `{{prefix}}_request_conditions`
ADD COLUMN IF NOT EXISTS `condition_group_id` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `request_id`;
INSERT INTO `{{prefix}}_request_condition_groups`
(`request_id`, `parent_id`, `group_title`, `group_operator`, `group_position`)
SELECT r.`Id`, 0, '',
COALESCE((SELECT c.`condition_join`
FROM `{{prefix}}_request_conditions` c
WHERE c.`request_id` = r.`Id` AND c.`condition_status` = '1'
ORDER BY c.`condition_position`, c.`Id` LIMIT 1), 'AND'),
0
FROM `{{prefix}}_request` r
WHERE NOT EXISTS (
SELECT 1 FROM `{{prefix}}_request_condition_groups` g
WHERE g.`request_id` = r.`Id` AND g.`parent_id` = 0
);
UPDATE `{{prefix}}_request_conditions` c
JOIN `{{prefix}}_request_condition_groups` g
ON g.`request_id` = c.`request_id` AND g.`parent_id` = 0
SET c.`condition_group_id` = g.`Id`
WHERE c.`condition_group_id` = 0;
ALTER TABLE `{{prefix}}_request_conditions`
ADD KEY IF NOT EXISTS `idx_request_group_position`
(`request_id`, `condition_group_id`, `condition_position`);