mirror of
https://github.com/avecms/AVE.cms.git
synced 2026-08-01 08:45:44 +00:00
38 lines
1.6 KiB
SQL
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`);
|