Files
chorus/migrations/000009_admin_grouped_navigation.down.sql
T

125 lines
4.1 KiB
SQL

CREATE TABLE IF NOT EXISTS chorus_admin_grouped_navigation_down_guard (
id TINYINT NOT NULL,
CONSTRAINT chk_chorus_admin_grouped_navigation_down_guard CHECK (id = 0)
) ENGINE=InnoDB;
DELETE FROM chorus_admin_grouped_navigation_down_guard;
INSERT INTO chorus_admin_grouped_navigation_down_guard (id)
SELECT 1
WHERE EXISTS (
SELECT 1
FROM sys_menu child
JOIN sys_menu parent ON parent.menu_id = child.parent_id
WHERE parent.path IN (
'/chorus/configuration',
'/chorus/monitoring',
'/chorus/access',
'/chorus/system'
)
AND child.path NOT IN (
'/chorus/providers',
'/chorus/models',
'/chorus/routes',
'/chorus/templates',
'/chorus/health',
'/chorus/generations',
'/chorus/users',
'/chorus/api-keys',
'/chorus/system/admins',
'/chorus/system/roles',
'/chorus/system/menus',
'/chorus/system/apis',
'/chorus/system/login-logs'
)
);
DROP TABLE chorus_admin_grouped_navigation_down_guard;
DELETE casbin
FROM sys_casbin_rule casbin
JOIN sys_api api
ON casbin.ptype = 'p'
AND casbin.v0 = 'chorus_operator'
AND casbin.v1 = api.path
AND casbin.v2 = api.action
JOIN sys_menu_api_rule menu_api ON menu_api.sys_api_id = api.id
JOIN sys_menu menu ON menu.menu_id = menu_api.menu_id
WHERE menu.path LIKE '/chorus/system/%';
DELETE menu_api
FROM sys_menu_api_rule menu_api
JOIN sys_menu menu ON menu.menu_id = menu_api.menu_id
WHERE menu.path IN (
'/chorus/system/admins',
'/chorus/system/roles',
'/chorus/system/menus',
'/chorus/system/apis',
'/chorus/system/login-logs'
);
DELETE FROM sys_api
WHERE handle LIKE 'chorus.system.%';
DELETE FROM sys_menu
WHERE path IN (
'/chorus/system/admins',
'/chorus/system/roles',
'/chorus/system/menus',
'/chorus/system/apis',
'/chorus/system/login-logs'
);
INSERT INTO sys_menu
(menu_name, title, icon, path, paths, menu_type, action, permission, parent_id, no_cache, breadcrumb, component, sort, visible, is_frame)
VALUES
('chorus', 'Chorus 运营', 'ri:magic-line', '/chorus', '', 'M', '', 'chorus:menu:view', 0, FALSE, 'Chorus 运营', 'Layout', 900, '0', '0')
ON DUPLICATE KEY UPDATE
menu_name = VALUES(menu_name), title = VALUES(title), icon = VALUES(icon), menu_type = VALUES(menu_type),
action = VALUES(action), permission = VALUES(permission), parent_id = VALUES(parent_id), no_cache = VALUES(no_cache),
breadcrumb = VALUES(breadcrumb), component = VALUES(component), sort = VALUES(sort), visible = VALUES(visible),
is_frame = VALUES(is_frame), deleted_at = NULL;
UPDATE sys_menu SET paths = CONCAT('/0/', menu_id) WHERE path = '/chorus';
UPDATE sys_menu child
JOIN (
SELECT '/chorus/providers' AS child_path, '上游服务商' AS title, 10 AS sort_order
UNION ALL SELECT '/chorus/models', '模型配置', 20
UNION ALL SELECT '/chorus/routes', '路由策略', 30
UNION ALL SELECT '/chorus/templates', '提示词模板', 40
UNION ALL SELECT '/chorus/health', '上游健康', 50
UNION ALL SELECT '/chorus/generations', '生成记录', 60
UNION ALL SELECT '/chorus/users', '用户管理', 70
UNION ALL SELECT '/chorus/api-keys', 'API 密钥', 80
) desired ON desired.child_path = child.path
JOIN sys_menu parent ON parent.path = '/chorus'
SET child.parent_id = parent.menu_id,
child.paths = CONCAT(parent.paths, '/', child.menu_id),
child.title = desired.title,
child.breadcrumb = CONCAT(parent.title, ' / ', desired.title),
child.sort = desired.sort_order,
child.deleted_at = NULL;
INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
SELECT role_record.role_id, menu.menu_id
FROM sys_role role_record
JOIN sys_menu menu ON menu.path IN (
'/chorus',
'/chorus/providers',
'/chorus/models',
'/chorus/routes',
'/chorus/templates',
'/chorus/health',
'/chorus/generations',
'/chorus/users',
'/chorus/api-keys'
)
WHERE role_record.role_key = 'chorus_operator';
DELETE FROM sys_menu
WHERE path IN (
'/chorus/configuration',
'/chorus/monitoring',
'/chorus/access',
'/chorus/system'
);