imetting/backend/sql/migrations/standardize_sys_table_prefi...

122 lines
3.7 KiB
SQL

-- Migration: standardize system-level table names with sys_ prefix
-- Strategy:
-- 1) Rename physical tables to sys_*
-- 2) Create compatibility views with legacy names
SET @rename_users_sql = (
SELECT IF(
EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'users' AND table_type = 'BASE TABLE'
) AND NOT EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'sys_users'
),
'RENAME TABLE users TO sys_users',
'SELECT 1'
)
);
PREPARE stmt FROM @rename_users_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @rename_roles_sql = (
SELECT IF(
EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'roles' AND table_type = 'BASE TABLE'
) AND NOT EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'sys_roles'
),
'RENAME TABLE roles TO sys_roles',
'SELECT 1'
)
);
PREPARE stmt FROM @rename_roles_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @rename_menus_sql = (
SELECT IF(
EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'menus' AND table_type = 'BASE TABLE'
) AND NOT EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'sys_menus'
),
'RENAME TABLE menus TO sys_menus',
'SELECT 1'
)
);
PREPARE stmt FROM @rename_menus_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @rename_rmp_sql = (
SELECT IF(
EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'role_menu_permissions' AND table_type = 'BASE TABLE'
) AND NOT EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'sys_role_menu_permissions'
),
'RENAME TABLE role_menu_permissions TO sys_role_menu_permissions',
'SELECT 1'
)
);
PREPARE stmt FROM @rename_rmp_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @rename_dict_data_sql = (
SELECT IF(
EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'dict_data' AND table_type = 'BASE TABLE'
) AND NOT EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'sys_dict_data'
),
'RENAME TABLE dict_data TO sys_dict_data',
'SELECT 1'
)
);
PREPARE stmt FROM @rename_dict_data_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @rename_sys_param_sql = (
SELECT IF(
EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'system_parameters' AND table_type = 'BASE TABLE'
) AND NOT EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name = 'sys_system_parameters'
),
'RENAME TABLE system_parameters TO sys_system_parameters',
'SELECT 1'
)
);
PREPARE stmt FROM @rename_sys_param_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Drop existing legacy-name views if present, then recreate compatibility views.
DROP VIEW IF EXISTS users;
DROP VIEW IF EXISTS roles;
DROP VIEW IF EXISTS menus;
DROP VIEW IF EXISTS role_menu_permissions;
DROP VIEW IF EXISTS dict_data;
DROP VIEW IF EXISTS system_parameters;
CREATE VIEW users AS SELECT * FROM sys_users;
CREATE VIEW roles AS SELECT * FROM sys_roles;
CREATE VIEW menus AS SELECT * FROM sys_menus;
CREATE VIEW role_menu_permissions AS SELECT * FROM sys_role_menu_permissions;
CREATE VIEW dict_data AS SELECT * FROM sys_dict_data;
CREATE VIEW system_parameters AS SELECT * FROM sys_system_parameters;