cosmo/backend/scripts/add_events_menu.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 $$;