-- 微信用户表字段迁移脚本
-- 将 wechat_code 字段重命名为 openid
-- 注意：执行前请备份数据！

-- 检查表是否存在
DO $$
BEGIN
    IF EXISTS (SELECT FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'wechat_users') THEN
        -- 检查是否已经有openid字段
        IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'wechat_users' AND column_name = 'openid') THEN
            -- 如果存在wechat_code字段，则重命名
            IF EXISTS (SELECT FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'wechat_users' AND column_name = 'wechat_code') THEN
                -- 重命名字段
                ALTER TABLE public.wechat_users RENAME COLUMN wechat_code TO openid;
                
                -- 更新字段注释
                COMMENT ON COLUMN public.wechat_users.openid IS '微信用户openid，唯一标识';
                
                -- 重命名相关索引
                IF EXISTS (SELECT FROM pg_class WHERE relname = 'idx_wechat_users_wechat_code') THEN
                    DROP INDEX IF EXISTS public.idx_wechat_users_wechat_code;
                    CREATE INDEX idx_wechat_users_openid ON public.wechat_users(openid);
                END IF;
                
                RAISE NOTICE '成功将 wechat_code 字段重命名为 openid';
            ELSE
                RAISE NOTICE 'wechat_code 字段不存在，无需迁移';
            END IF;
        ELSE
            RAISE NOTICE 'openid 字段已存在，无需迁移';
        END IF;
    ELSE
        RAISE NOTICE 'wechat_users 表不存在，请先创建表';
    END IF;
END $$;
