56 lines
1.6 KiB
SQL
56 lines
1.6 KiB
SQL
-- Add Celestial Events Menu
|
|
-- 添加天体事件展示菜单到数据管理菜单下
|
|
|
|
-- First check if menu already exists
|
|
DO $$
|
|
DECLARE
|
|
menu_exists BOOLEAN;
|
|
BEGIN
|
|
SELECT EXISTS(SELECT 1 FROM menus WHERE name = 'celestial_events') INTO menu_exists;
|
|
|
|
IF NOT menu_exists THEN
|
|
INSERT INTO "public"."menus"
|
|
("name", "title", "icon", "path", "component", "parent_id", "sort_order", "is_active")
|
|
VALUES
|
|
(
|
|
'celestial_events',
|
|
'天体事件',
|
|
'CalendarOutlined',
|
|
'/admin/celestial-events',
|
|
NULL,
|
|
2, -- parent_id = 2 (数据管理)
|
|
4, -- sort_order = 4 (在NASA数据下载之后)
|
|
true
|
|
);
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Get the menu ID for role assignment
|
|
DO $$
|
|
DECLARE
|
|
menu_id_var INTEGER;
|
|
admin_role_id INTEGER;
|
|
user_role_id INTEGER;
|
|
BEGIN
|
|
-- Get the celestial_events menu ID
|
|
SELECT id INTO menu_id_var FROM menus WHERE name = 'celestial_events';
|
|
|
|
-- Get role IDs
|
|
SELECT id INTO admin_role_id FROM roles WHERE name = 'admin';
|
|
SELECT id INTO user_role_id FROM roles WHERE name = 'user';
|
|
|
|
-- Assign menu to admin role
|
|
IF menu_id_var IS NOT NULL AND admin_role_id IS NOT NULL THEN
|
|
INSERT INTO role_menus (role_id, menu_id)
|
|
VALUES (admin_role_id, menu_id_var)
|
|
ON CONFLICT DO NOTHING;
|
|
END IF;
|
|
|
|
-- Assign menu to user role (users can view events)
|
|
IF menu_id_var IS NOT NULL AND user_role_id IS NOT NULL THEN
|
|
INSERT INTO role_menus (role_id, menu_id)
|
|
VALUES (user_role_id, menu_id_var)
|
|
ON CONFLICT DO NOTHING;
|
|
END IF;
|
|
END $$;
|