Files
leaudit-platform-frontend/database/migrations/manage_entry_module_areas.sql
T
2025-12-05 00:09:32 +08:00

51 lines
1.8 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 入口模块地区管理 - 常用操作
-- 查看所有配置
SELECT id, name, jsonb_pretty(areas) AS configs FROM entry_modules;
-- 禁用某个入口在某个地区(示例:禁用id=1在"云浮"
UPDATE entry_modules
SET areas = (
SELECT jsonb_agg(CASE WHEN elem->>'area' = '云浮'
THEN jsonb_set(elem, '{enabled}', 'false'::jsonb) ELSE elem END)
FROM jsonb_array_elements(areas) AS elem
), updated_at = NOW()
WHERE id = 1;
-- 启用某个入口在某个地区(示例:启用id=1在"云浮"
UPDATE entry_modules
SET areas = (
SELECT jsonb_agg(CASE WHEN elem->>'area' = '云浮'
THEN jsonb_set(elem, '{enabled}', 'true'::jsonb) ELSE elem END)
FROM jsonb_array_elements(areas) AS elem
), updated_at = NOW()
WHERE id = 1;
-- 添加新地区(示例:为id=1添加"揭阳"
UPDATE entry_modules
SET areas = areas || jsonb_build_array(
jsonb_build_object('area', '揭阳', 'enabled', true, 'sort_order',
(SELECT COALESCE(MAX((elem->>'sort_order')::int), 0) + 1
FROM jsonb_array_elements(areas) AS elem))
), updated_at = NOW()
WHERE id = 1 AND NOT EXISTS (
SELECT 1 FROM jsonb_array_elements(areas) AS elem WHERE elem->>'area' = '揭阳'
);
-- 删除某个地区配置(示例:从id=1删除"云浮"
UPDATE entry_modules
SET areas = (SELECT jsonb_agg(elem) FROM jsonb_array_elements(areas) AS elem
WHERE elem->>'area' != '云浮'
), updated_at = NOW()
WHERE id = 1;
-- 查看某个地区已启用的模块(示例:查看"梅州")
SELECT id, name FROM entry_modules
WHERE areas @> '[{"area": "梅州", "enabled": true}]'::jsonb;
-- 统计每个地区的已启用模块数量
SELECT elem->>'area' AS area, COUNT(*) AS count
FROM entry_modules, jsonb_array_elements(areas) AS elem
WHERE (elem->>'enabled')::boolean = true
GROUP BY elem->>'area';