90 lines
6.7 KiB
SQL
90 lines
6.7 KiB
SQL
-- Chorus-owned records use stable role keys, menu paths, and API handles. The seed
|
|
-- deliberately creates no sys_user row and therefore never introduces a known password.
|
|
INSERT INTO sys_role (role_name, status, role_key, role_sort, flag, remark, admin, data_scope)
|
|
VALUES ('Chorus Operator', '2', 'chorus_operator', 100, '', 'Chorus operations role', FALSE, '1')
|
|
ON DUPLICATE KEY UPDATE
|
|
role_name = VALUES(role_name), status = VALUES(status), role_sort = VALUES(role_sort),
|
|
remark = VALUES(remark), admin = VALUES(admin), data_scope = VALUES(data_scope), deleted_at = NULL;
|
|
|
|
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), 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';
|
|
|
|
INSERT INTO sys_menu
|
|
(menu_name, title, icon, path, paths, menu_type, action, permission, parent_id, no_cache, breadcrumb, component, sort, visible, is_frame)
|
|
SELECT menu_name, title, icon, path, '', menu_type, action, permission,
|
|
(SELECT menu_id FROM sys_menu WHERE path = '/chorus'), no_cache, breadcrumb, component, sort, visible, is_frame
|
|
FROM (
|
|
SELECT 'chorus-providers' AS menu_name, 'Providers' AS title, 'ri:server-line' AS icon,
|
|
'/chorus/providers' AS path, 'C' AS menu_type, '' AS action, 'chorus:providers:view' AS permission,
|
|
FALSE AS no_cache, 'Chorus / Providers' AS breadcrumb, 'chorus/providers/index' AS component, 10 AS sort, '0' AS visible, '0' AS is_frame
|
|
UNION ALL SELECT 'chorus-models', 'Models', 'ri:cpu-line', '/chorus/models', 'C', '', 'chorus:models:view', FALSE, 'Chorus / Models', 'chorus/models/index', 20, '0', '0'
|
|
UNION ALL SELECT 'chorus-routes', 'Route Pools', 'ri:git-branch-line', '/chorus/routes', 'C', '', 'chorus:routes:view', FALSE, 'Chorus / Route Pools', 'chorus/routes/index', 30, '0', '0'
|
|
UNION ALL SELECT 'chorus-templates', 'Prompt Templates', 'ri:file-text-line', '/chorus/templates', 'C', '', 'chorus:templates:view', FALSE, 'Chorus / Prompt Templates', 'chorus/templates/index', 40, '0', '0'
|
|
UNION ALL SELECT 'chorus-generations', 'Generations', 'ri:history-line', '/chorus/generations', 'C', '', 'chorus:generations:view', FALSE, 'Chorus / Generations', 'chorus/generations/index', 50, '0', '0'
|
|
UNION ALL SELECT 'chorus-users', 'Users', 'ri:user-line', '/chorus/users', 'C', '', 'chorus:users:view', FALSE, 'Chorus / Users', 'chorus/users/index', 60, '0', '0'
|
|
) AS chorus_menus
|
|
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 child
|
|
JOIN sys_menu parent ON parent.path = '/chorus'
|
|
SET child.paths = CONCAT(parent.paths, '/', child.menu_id)
|
|
WHERE child.path IN ('/chorus/providers', '/chorus/models', '/chorus/routes', '/chorus/templates', '/chorus/generations', '/chorus/users');
|
|
|
|
INSERT INTO sys_api (handle, title, path, type, action)
|
|
VALUES
|
|
('chorus.providers.list', 'List providers', '/api/v1/chorus/providers', 'BUS', 'GET'),
|
|
('chorus.providers.create', 'Create provider', '/api/v1/chorus/providers', 'BUS', 'POST'),
|
|
('chorus.providers.get', 'Get provider', '/api/v1/chorus/providers/:id', 'BUS', 'GET'),
|
|
('chorus.providers.update', 'Update provider', '/api/v1/chorus/providers/:id', 'BUS', 'PUT'),
|
|
('chorus.providers.credential.rotate', 'Rotate provider credential', '/api/v1/chorus/providers/:id/credential', 'BUS', 'PUT'),
|
|
('chorus.providers.credential.activate', 'Activate provider credential', '/api/v1/chorus/providers/:id/credential/:version/activate', 'BUS', 'POST'),
|
|
('chorus.models.list', 'List provider models', '/api/v1/chorus/provider-models', 'BUS', 'GET'),
|
|
('chorus.models.create', 'Create provider model', '/api/v1/chorus/provider-models', 'BUS', 'POST'),
|
|
('chorus.models.update', 'Update provider model', '/api/v1/chorus/provider-models/:id', 'BUS', 'PUT'),
|
|
('chorus.models.connectivity', 'Run connectivity check', '/api/v1/chorus/provider-models/:id/connectivity-checks', 'BUS', 'POST'),
|
|
('chorus.routes.list', 'List route pools', '/api/v1/chorus/route-pools', 'BUS', 'GET'),
|
|
('chorus.routes.create', 'Create route pool', '/api/v1/chorus/route-pools', 'BUS', 'POST'),
|
|
('chorus.routes.update', 'Update route pool', '/api/v1/chorus/route-pools/:id', 'BUS', 'PUT'),
|
|
('chorus.templates.list', 'List prompt templates', '/api/v1/chorus/prompt-templates', 'BUS', 'GET'),
|
|
('chorus.templates.create', 'Create prompt template', '/api/v1/chorus/prompt-templates', 'BUS', 'POST'),
|
|
('chorus.templates.update', 'Update prompt template', '/api/v1/chorus/prompt-templates/:id', 'BUS', 'PUT'),
|
|
('chorus.generations.list', 'List generations', '/api/v1/chorus/generations', 'BUS', 'GET'),
|
|
('chorus.users.list', 'List portal users', '/api/v1/chorus/users', 'BUS', 'GET')
|
|
ON DUPLICATE KEY UPDATE
|
|
title = VALUES(title), type = VALUES(type), deleted_at = NULL;
|
|
|
|
INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
|
|
SELECT r.role_id, m.menu_id
|
|
FROM sys_role r
|
|
JOIN sys_menu m ON m.path IN ('/chorus', '/chorus/providers', '/chorus/models', '/chorus/routes', '/chorus/templates', '/chorus/generations', '/chorus/users')
|
|
WHERE r.role_key = 'chorus_operator';
|
|
|
|
INSERT IGNORE INTO sys_menu_api_rule (menu_id, sys_api_id)
|
|
SELECT m.menu_id, a.id
|
|
FROM sys_menu m
|
|
JOIN sys_api a ON (
|
|
(m.path = '/chorus/providers' AND a.handle LIKE 'chorus.providers.%') OR
|
|
(m.path = '/chorus/models' AND a.handle LIKE 'chorus.models.%') OR
|
|
(m.path = '/chorus/routes' AND a.handle LIKE 'chorus.routes.%') OR
|
|
(m.path = '/chorus/templates' AND a.handle LIKE 'chorus.templates.%') OR
|
|
(m.path = '/chorus/generations' AND a.handle = 'chorus.generations.list') OR
|
|
(m.path = '/chorus/users' AND a.handle = 'chorus.users.list')
|
|
);
|
|
|
|
INSERT IGNORE INTO sys_casbin_rule (ptype, v0, v1, v2, v3, v4, v5)
|
|
SELECT 'p', 'chorus_operator', path, action, '', '', ''
|
|
FROM sys_api
|
|
WHERE handle LIKE 'chorus.%';
|