Skip to content

Commit 7fc3865

Browse files
committed
reorganize os categories
Signed-off-by: Abhishek Kumar <[email protected]>
1 parent 90294a6 commit 7fc3865

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

engine/schema/src/main/resources/META-INF/db/schema-42000to42010.sql

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,86 @@ CALL `cloud`.`IDEMPOTENT_UPDATE_API_PERMISSION`('Support Admin - Default', 'vali
8080
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.guest_os_category', 'featured', 'tinyint(1) NOT NULL DEFAULT 0 COMMENT "whether the category is featured or not" AFTER `uuid`');
8181
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.guest_os_category', 'sort_key', 'int NOT NULL DEFAULT 0 COMMENT "sort key used for customising sort method" AFTER `featured`');
8282
UPDATE `cloud`.`guest_os_category` SET `featured` = 1 WHERE `name` NOT IN ('Novel', 'None');
83+
84+
-- Begin: Changes for Guest OS category cleanup
85+
-- Add new OS categories if not present
86+
DROP PROCEDURE IF EXISTS `cloud`.`INSERT_CATEGORY_IF_NOT_EXIST`;
87+
CREATE PROCEDURE `cloud`.`INSERT_CATEGORY_IF_NOT_EXIST`(IN os_name VARCHAR(255))
88+
BEGIN
89+
IF NOT EXISTS ((SELECT 1 FROM `cloud`.`guest_os_category` WHERE name = os_name))
90+
THEN
91+
INSERT INTO `cloud`.`guest_os_category` (name, uuid)
92+
VALUES (os_name, UUID())
93+
; END IF
94+
; END;
95+
96+
CALL `cloud`.`INSERT_CATEGORY_IF_NOT_EXIST`('Fedora');
97+
CALL `cloud`.`INSERT_CATEGORY_IF_NOT_EXIST`('Rocky Linux');
98+
CALL `cloud`.`INSERT_CATEGORY_IF_NOT_EXIST`('Alma Linux');
99+
100+
-- Move existing guest OS to new categories
101+
DROP PROCEDURE IF EXISTS `cloud`.`UPDATE_CATEGORY_FOR_GUEST_OSES`;
102+
CREATE PROCEDURE `cloud`.`UPDATE_CATEGORY_FOR_GUEST_OSES`(IN category_name VARCHAR(255), IN os_name VARCHAR(255))
103+
BEGIN
104+
DECLARE category_id BIGINT
105+
; SELECT `id` INTO category_id
106+
FROM `cloud`.`guest_os_category`
107+
WHERE `name` = category_name
108+
LIMIT 1
109+
; IF category_id IS NULL THEN
110+
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Category not found'
111+
; END IF
112+
; UPDATE `cloud`.`guest_os`
113+
SET `category_id` = category_id
114+
WHERE `display_name` LIKE CONCAT('%', os_name, '%')
115+
; END;
116+
CALL `cloud`.`UPDATE_CATEGORY_FOR_GUEST_OSES`('Rocky Linux', 'Rocky Linux');
117+
CALL `cloud`.`UPDATE_CATEGORY_FOR_GUEST_OSES`('Alma Linux', 'Alma Linux');
118+
CALL `cloud`.`UPDATE_CATEGORY_FOR_GUEST_OSES`('Fedora', 'Fedora');
119+
120+
-- Move existing guest OS whose category will be deleted to Other category
121+
DROP PROCEDURE IF EXISTS `cloud`.`UPDATE_NEW_AND_DELETE_OLD_CATEGORY_FOR_GUEST_OS`;
122+
CREATE PROCEDURE `cloud`.`UPDATE_NEW_AND_DELETE_OLD_CATEGORY_FOR_GUEST_OS`(IN to_category_name VARCHAR(255), IN from_category_name VARCHAR(255))
123+
BEGIN
124+
DECLARE done INT DEFAULT 0
125+
; DECLARE to_category_id BIGINT
126+
; SELECT id INTO to_category_id
127+
FROM `cloud`.`guest_os_category`
128+
WHERE `name` = to_category_name
129+
LIMIT 1
130+
; IF to_category_id IS NULL THEN
131+
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'ToCategory not found'
132+
; END IF
133+
; UPDATE `cloud`.`guest_os`
134+
SET `category_id` = to_category_id
135+
WHERE `category_id` = (SELECT `id` FROM `cloud`.`guest_os_category` WHERE `name` = from_category_name)
136+
; DELETE FROM `cloud`.`guest_os_category` WHERE `name` = from_category_name
137+
; END;
138+
CALL `cloud`.`UPDATE_NEW_AND_DELETE_OLD_CATEGORY_FOR_GUEST_OS`('Other', 'Novel');
139+
CALL `cloud`.`UPDATE_NEW_AND_DELETE_OLD_CATEGORY_FOR_GUEST_OS`('Other', 'None');
140+
CALL `cloud`.`UPDATE_NEW_AND_DELETE_OLD_CATEGORY_FOR_GUEST_OS`('Other', 'Unix');
141+
CALL `cloud`.`UPDATE_NEW_AND_DELETE_OLD_CATEGORY_FOR_GUEST_OS`('Other', 'Mac');
142+
143+
-- Add featured column for cloud.guest_os_category
144+
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.guest_os_category', 'featured', 'tinyint(1) NOT NULL DEFAULT 0 COMMENT "whether the category is featured or not" AFTER `uuid`');
145+
UPDATE `cloud`.`guest_os_category` SET featured = 1;
146+
-- Add sort_key column for cloud.guest_os_category
147+
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.guest_os_category', 'sort_key', 'int NOT NULL DEFAULT 0 COMMENT "sort key used for customising sort method" AFTER `featured`');
148+
149+
-- Update sort order for all guest OS categories
150+
UPDATE `cloud`.`guest_os_category`
151+
SET `sort_key` = CASE
152+
WHEN `name` = 'Ubuntu' THEN 1
153+
WHEN `name` = 'Debian' THEN 2
154+
WHEN `name` = 'Fedora' THEN 3
155+
WHEN `name` = 'CentOS' THEN 4
156+
WHEN `name` = 'Rocky Linux' THEN 5
157+
WHEN `name` = 'Alma Linux' THEN 6
158+
WHEN `name` = 'Oracle' THEN 7
159+
WHEN `name` = 'RedHat' THEN 8
160+
WHEN `name` = 'SUSE' THEN 9
161+
WHEN `name` = 'Windows' THEN 10
162+
WHEN `name` = 'Other' THEN 11
163+
ELSE `sort_key`
164+
END;
165+
-- End: Changes for Guest OS category cleanup

0 commit comments

Comments
 (0)