-- =====================================================================================
-- Admin 系统维护 - 获取服务器环境信息 RPC
-- 位置：docs/sql/30_rpc/admin/rpc_admin_get_system_info_v1.sql
-- 对象类型：RPC 函数（SECURITY DEFINER）
-- 版本：v1
-- 说明：获取服务器操作系统、数据库版本及运行环境信息
-- =====================================================================================

CREATE OR REPLACE FUNCTION public.rpc_admin_get_system_info()
RETURNS JSONB
SECURITY DEFINER
SET search_path = public
LANGUAGE plpgsql
AS $$
DECLARE
    v_info JSONB;
    v_db_version TEXT;
BEGIN
    -- 1. 权限检查 (仅管理员)
    IF NOT EXISTS (
        SELECT 1 FROM public.ak_users 
        WHERE auth_id = auth.uid() AND role = 'admin'
    ) THEN
        RAISE EXCEPTION 'Permission denied';
    END IF;

    -- 2. 获取数据库版本
    SELECT version() INTO v_db_version;

    -- 3. 构建返回信息
    v_info := jsonb_build_object(
        'server_os', 'Linux (Simulated)', -- 数据库侧通常难以直接获取完整的宿主系统信息
        'web_server', 'Nginx/1.24.0 (Simulated)',
        'db_engine', 'PostgreSQL',
        'db_version', v_db_version,
        'uts_runtime', 'uni-app x (UTS)',
        'auth_id', 'ZC2884891' -- 模拟授权码
    );

    RETURN v_info;
END;
$$;

-- 授权
REVOKE ALL ON FUNCTION public.rpc_admin_get_system_info() FROM PUBLIC;
GRANT EXECUTE ON FUNCTION public.rpc_admin_get_system_info() TO authenticated;
